Pourquoi ne puis-je pas accéder immédiatement aux éléments du tableau renvoyé par Par exemple, cela ne fonctionne pas: P> exploser () code>?
$username = explode('.',$thread_user);
$username = $username[1];
6 Réponses :
La raison pour laquelle il n'est pas évident comment faire ce que vous voulez, c'est que exploser code> pourrait renvoyer
false code>. Vous devriez vérifier la valeur de retour avant d'indexer. P>
Merci. Je n'ai pas l'habitude de retourner des valeurs comme ça et j'ai raté que lorsque j'ai vérifié le manuel PHP.
Il me semblait toujours un peu original pour moi, mais c'est utile et non plus laid quec. Avoir à vérifier les appels vers Malloc en C pour les retours nuls.
C'est en fait juste que la syntaxe PHP ne supporte pas cela. Vous dites simplement que cela est destiné à ce que les gens vérifient leurs valeurs de retour?
Non, pas exactement. Je pense plutôt que c'est l'une des ramifications les plus utiles de la décision de ne pas soutenir cette syntaxe.
James, vous êtes absolument correct que pour PHP pour soutenir cette syntaxe ajouterait une autre couche de complexité en raison du fait que, dans PHP, une langue dactylographiée, vous ne pouvez pas garantir le type de retour d'une fonction. Cependant, il y a d'autres cas où l'analyseur de PHP permettra en réalité de telles conditions. Dans ces cas, PHP tente simplement le typaire le plus proche, il peut gérer et jette un message d'avertissement. Essayez d'accéder à $ userid [1] code> où $ userid est un entier, par exemple.
En réalité, PHP ne supporte tout simplement pas cette syntaxe. Dans des langues comme JavaScript (par exemple), l'analyseur peut gérer des opérations de nidification / enchaînement plus complexes, mais PHP n'est pas une de ces langues. P>
^ la vraie réponse. Même si vous écrivez une fonction qui renvoie une matrice invariante, vous ne pouvez toujours pas indexer l'appel de la fonction (comme la réponse de James pourrait vous amener à croire), car il s'agit simplement d'une question de la syntaxe ne fonctionne pas.
+1 Pour le commentaire de Chuck - Il est clair que certaines programmations défensives m'ont permis d'éviter d'apprendre PHP aussi pleinement que je le devrais. (Et peut-être que je ne devrais pas essayer de répondre aux questions le dernier jour d'un week-end de trois jours ...)
Depuis Explode () renvoie un tableau, vous pouvez utiliser d'autres fonctions telles que $ US Nom = actuel (exploser ('.', $ thread_user)); > p>
J'utilise juste ma propre fonction: Le code de votre exemple serait alors: p>
Voici comment la faire descendre à une ligne: p>
où $ nom d'utilisateur = courant (array_slice (exploser ('.', $ thread_user), Indx, 1)); P> P>
Indx code> est l'index que vous souhaitez à partir du tableau explosé. Je suis nouveau à PHP mais j'aime bien dire une matrice éclatée :) p>
Sa version dépendante. php 5.4 strong> prend en charge l'accès à la matrice renvoyée. P>
Source: http://php.net/manual /en/language.types.array.php#example-115 p>