300 votes

Seules les variables doivent être passés par référence

<pre><code></code><p>Toutes les idées ? Après 2 jours, toujours coincé</p></pre>

623voto

Oswald Points 18625

Affecter le résultat de l' explode à une variable et passer cette variable à l' end:

$tmp = explode('.', $file_name);
$file_extension = end($tmp);

Le problème est, qu' end nécessite une référence, car il modifie la représentation interne de la matrice (c'est à dire qu'il fait de l' élément courant pointeur pointer vers le dernier élément).

Le résultat de l' explode('.', $file_name) ne peut pas être transformé en une référence. C'est une restriction dans le langage PHP, qui existe probablement pour des raisons de simplicité.

60voto

ryeguy Points 24980

Tout le monde vous a déjà donné la raison pour laquelle que vous obtenez une erreur, mais voici le meilleur moyen de faire ce que vous voulez faire :``

59voto

Sinan Eldem Points 700

Ajout d’une parenthèse supplémentaire supprime l’erreur :

27voto

Floern Points 11484

sauver le tableau de explode() à une variable et appelez ensuite end() sur cette variable :

BTW : J’utilise ce code pour obtenir l’extension de fichier :

extrait la chaîne après le dernier et coupe le

10voto

Will Vousden Points 13332

Essayez ceci :

La raison est que l’argument pour est passé par référence, depuis modifie le tableau en avançant son pointeur interne vers le dernier élément. Si vous ne passez pas une variable, il n’y a rien pour une référence pour pointer vers.

Voir `` dans le manuel PHP pour plus d’informations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X