Y a-t-il un moyen de rendre cela plus rapide? Je n'aime pas que j'ai besoin de créer de nouvelles variables comme $ item.Comment faire une boucle de tableau plus rapide en PHP
Répondre
<?php
$transport = array('foot', 'bike', 'car', 'plane');
foreach ($transport as $value) {
echo $value;
}
?>
en utilisant foreach fait plus vite –
Vous pourriez faire un foreach, mais vous créeriez alors 2 nouvelles variables. Sauf si vous n'aimez pas l'idée d'assigner des variables dans la clause while().
foreach($data as $key => $value)
{
echo $key . " => ".$value;
}
Dans les deux cas, vous devrez créer une variable réelle.
Si vous ne voulez pas créer des variables temporaires, le faire comme ceci:
while (current($data))
{
echo '<ATTR>',current($data), '</ATTR>', "\n";
next($data);
}
Cependant, je ne sais pas si cela va vraiment le faire plus vite. Ils seulement la façon de dire serait avec un profileur, mais c'est une telle micro-optimisation je doute que vous remarquerez la différence.
Le meilleur moyen d'accélérer la boucle serait d'utiliser un ordinateur plus rapide.
D'accord, et si la boucle est assez grande pour qu'il y ait une différence notable, le temps nécessaire au serveur pour renvoyer la réponse écrasera le temps gagné en l'optimisant. –
J'ai vérifié la vitesse en utilisant microtime() et foreach est plus rapide que current() et next() en boucle. –
Oui, mais vous avez dit que vous ne voulez pas créer ces variables temporaires - avec la boucle 'foreach' vous en créez 2! –
Si tout ce que vous faites est le code ci-dessus, vous pouvez utiliser une instruction implode.
if (count($data) > 0) {
echo "<ATTR>".implode("</ATTR>\n<ATTR>", $data)."</ATTR>";
}
Vous voulez dire imploser ("\ n", $ data); –
Ce qui, lorsqu'il est traité, prendra probablement le même temps (micro), puisqu'il fait probablement une boucle foreach. –
Ahh il a édité son post ... –
$ nl = "\ n";
while ($item = current($data))
{
echo '<ATTR>',$item, '</ATTR>',$nl;
next($data);
}
Stockez le caractère de nouvelle ligne dans une variable plutôt que d'analyser PHP les doubles guillemets dans chaque itération.
C'est un bon conseil, merci. –
Alex. Essayez d'utiliser PHP_EOL au lieu de stocker \ n en tant que variable. – hobodave
Qu'en est celui-ci:
function my_func($str) {
echo "<attr>{$str}</attr>\n";
}
array_map('my_func', $data);
(Si le travail, mais je suis curieux de sa vitesse par rapport à une boucle foreach
)
Ou, si vous utilisez PHP> = 5.3 (probablement pas votre cas, btw), vous pouvez utiliser celui-ci, sur la base d'une fonction lambda:
array_map(function ($item) {
echo "<attr>{$item}</attr>\n";
}, $data);
Presque la même chose, mais sans devoir déclarer une fonction utilisée une seule fois dans le programme.
- 1. Comment faire une boucle dans un tableau en Java?
- 2. php: comment ajouter une boucle impaire/paire dans un tableau
- 3. Quel est le moyen le plus rapide de remplir un tableau avec des nombres en PHP?
- 4. comment boucle à travers ce tableau en php
- 5. problème de tableau en boucle
- 6. Une méthode plus rapide pour additionner une liste de nombres qu'avec une boucle for?
- 7. PHP Notice: Undefined index lorsque tableau boucle
- 8. Comment faire une boucle de tuyau en bash
- 9. Le moyen le plus rapide de faire une boucle et de copier des données d'un DataSet vers un autre DataSet
- 10. moyen le plus rapide de comparer une chaîne avec un tableau de chaînes en C# 2.0
- 11. boucle PHP foreach par tableau multidimensionnel
- 12. Comment faire une boucle sur plusieurs baies?
- 13. moyen le plus rapide pour itérer un tableau en Java: variable boucle vs améliorée pour la déclaration
- 14. Façon sans boucle en C# de diviser une chaîne en tableau multidimensionnel ou tableau jagged
- 15. Justifier une machine de développement plus rapide
- 16. Comment faire une boucle repeat-until en C++?
- 17. façon plus rapide de faire cette requête de sélection
- 18. Quelle est la manière la plus élégante de faire "foreach x sauf y" en PHP?
- 19. Algorithme le plus rapide pour détecter une boucle dans un graphique
- 20. Une comparaison de chaînes ou une recherche de hachage est-elle plus rapide en Perl?
- 21. Une façon plus rapide de faire une liste <T> .Contains()
- 22. SQL Comment faire une boucle dans un tableau et fusionner le résultat?
- 23. Quel est le moyen le plus rapide pour déterminer si une URL existe en PHP?
- 24. Comment faire une requête rapide au système de fichiers?
- 25. PHP: comment vérifier la valeur du tableau A dans le tableau B sans boucle
- 26. Question rapide sur les sessions en PHP
- 27. Obtenez PHP clé du tableau assoc dans la boucle
- 28. comment faire une boucle dans le tableau associatif et renvoyer l'écho à la liste?
- 29. Comment faire une boucle sur les résultats de MySQL facilement?
- 30. Comment trouver une chaîne dans un tableau en PHP?
En fait, vous n'avez absolument pas besoin de la déclaration $ item. –
Ne seriez-vous pas obligé de mettre $ item = current ($ data) dans le temps au lieu de l'instruction? –
J'ai vérifié en utilisant le microtime pour la vitesse. Et il semble que l'utilisation de "while (current ($ data))" soit plus lente que "while ($ item = current ($ data))" mais très peu. L'utilisation de foreach est nettement plus rapide. –