6
votes

Concaténation de chaîne VS Array implore dans PHP

Après avoir utilisé Java depuis longtemps ma méthode standard pour créer de longues chaînes pièce par pièce consistait à ajouter les éléments à un tableau, puis implorez la matrice.

$out = 'a';
$out .= 'b';
echo $out;


2 commentaires

PHP n'est pas Java. Alors ne soyez pas surpris qu'ils diffèrent.


En PHP, les chaînes ne sont pas immuables ou même des objets.


6 Réponses :


4
votes

Choisissez le plus lisible. Toujours. Ce cas, je ramasserais le deuxième apporach. Puis optimisez-le, si c'est un goulot d'étranglement.


3 commentaires

Non, ce n'est pas un goulot d'étranglement, juste curieux. Quoi qu'il en soit, j'ai déjà mentionné la lisibilité.


Je ne peux que l'accepter cela - ne jamais faire quelque chose puisqu'un micro-repère montre qu'il est 0.0001% plus rapide. avec Xdebug ou Zenddebugger, il y a des profileurs pour PHP et si cela ne suffit pas, il existe des moyens de profiler également le temps d'exécution PHP, le temps passé de manière à utiliser de manière mieux utilisée que dans la maintien du code "optimisé" (et souvent, il est souvent moins cher de gérer encore plus de matériel que Payer le développeur)


+1 choisissez simplement le plus approprié. Si implore résout le problème avec élégance, utilisez-le.



9
votes

Pour moi, utiliser un tableau implique que vous allez faire quelque chose qui ne peut pas être fait avec une simple concaténation à la chaîne. Comme le tri, vérifiant l'unicité, etc. Si vous ne faites rien de tel que cela, la concaténation de la chaîne sera plus facile à lire dans une année ou deux par une personne qui ne connaît pas le code. Ils n'auront pas à se demander si le tableau va être manipulé avant d'être imploré.

Cela dit, je prends l'approche de la matrice implorée lorsque je dois construire une chaîne avec des virgules ou "et" entre les mots "


0 commentaires

2
votes

une différence (subtile) est clairement visible lors de la génération d'une chaîne séparée de caractère: xxx

la première imprimera a, b où ce dernier imprimera a, b, . Donc, à moins que vous utilisiez une chaîne vide en tant que sépérateur, comme vous l'avez fait dans votre exemple, il est généralement préférable d'utiliser implorez () .


2 commentaires

On pourrait faire: $ premier = vrai; foreach ($ en retard comme $ o) {if ($ premier) $ premier = faux; sinon echo ','; echo $ o; } Qui devrait vous donner un, B à la place.


@Raney: Pourquoi tout le problème lorsque implore () est plus facile?



2
votes

La concaténation-vs-implorait la Guerre sainte de côté: Non, il n'y a pas de différence.


0 commentaires

0
votes

Cela dépend de ce que vous voulez faire avec la chaîne / la matrice et la manière dont vous la créez

Si vous commencez par un tableau et avez besoin de trier / manipuler certains éléments, alors je suggère d'imploser

autre que cela, j'utilise habituellement une concaténation


0 commentaires

0
votes

Voici un test de performance pour les deux approches: xxx pré>

sortie avec PHP 7.1.33 sur MacOS: p> xxx pré>

sortie avec PHP 8.0.5 sur A (lent) Debian: P>

Time 1: 0.88076496124268
Time 2: 0.8109610080719


0 commentaires