72 votes

Est-ce que PHP a un équivalent à la syntaxe de compréhension de liste de Python?

Python a un point de vue syntaxique doux interprétations de la liste:

S = [x**2 for x in range(10)]
print S;
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

En PHP j'aurais besoin de faire certains boucle:

$output = array();
$Nums = range(0,9);

foreach ($Nums as $num) 
{
    $out[] = $num*=$num;
}
print_r($out);

pour obtenir:

Tableau ( [0] => 0 [1] => 1 [2] => 4 [3] => 9 [4] => 16 [5] => 25 [6] => 36 [7] => 49 [8] => 64 [9] => 81 )

Est-il de toute façon à obtenir une liste similaire de compréhension de la syntaxe de PHP? Est-il de toute façon à le faire avec l'une des nouvelles fonctionnalités de PHP 5.3?

Merci!

81voto

Paul Dixon Points 122033

Peut-être quelque chose comme ça?

 $out=array_map(function($x) {return $x*$x;}, range(0, 9))
 

Cela fonctionnera sous PHP 5.3+, dans une version plus ancienne il faudrait définir le callback séparément pour array_map

 function sq($x) {return $x*$x;}
$out=array_map('sq', range(0, 9));
 

6voto

GingerDog Points 504

PHP 5.5 peut soutenir les interprétations de la liste - voir la liste de diffusion de l'annonce:

Et la poursuite de la discussion:

2voto

Rufinus Points 8148

ne sortez pas de la boîte, mais jetez un oeil à: http://code.google.com/p/php-lc/ ou http://code.google.com/p/phparrayplus/

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