Program Club

PHP에는 Python의 목록 이해 구문과 동등한 기능이 있습니까?

proclub 2020. 11. 8. 11:28
반응형

PHP에는 Python의 목록 이해 구문과 동등한 기능이 있습니까?


파이썬은 문법적으로 달콤한 목록 이해력을 가지고 있습니다 :

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

PHP에서는 몇 가지 루핑을해야합니다.

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

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

얻으려면 :

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

어쨌든 PHP에서 유사한 목록 이해 구문을 얻을 수 있습니까? 어쨌든 PHP 5.3의 새로운 기능으로 할 수 있습니까?

감사!


아마 이런 건가요?

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

이것은 PHP 5.3 이상에서 작동합니다. 이전 버전에서는 array_map에 대한 콜백을 별도로 정의해야합니다.

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

PHP 5.5는 목록 이해를 지원할 수 있습니다. 메일 링 목록 공지를 참조하세요.

그리고 추가 논의 :


즉시 사용하지 말고 http://code.google.com/p/php-lc/ 또는 http://code.google.com/p/phparrayplus/를 살펴보십시오 .


.NET에서 Python의 "구문 적으로 달콤한 목록 이해"에 해당하는 것은 LINQ입니다. 그리고 PHP에는 YaLinqo 라이브러리 *를 포함하여 여러 포트가 있습니다 . 구문 론적으로, 오히려 전통적인 구조의 순서보다 더 가까이 SQL로의 forif하지만, 기능적으로는 유사 :

$a = Enumerable::range(0, 10)->select('$v * $v');

그러면 콘솔에 출력 될 수있는 반복기가 생성됩니다.

var_dump($a->toArray()); // by transforming the iterator to an array
echo $a->toString(', '); // or by imploding into a string

또는 사용하여 반복 foreach:

foreach ($a as $i)
    echo $i, PHP_EOL;

다음 '$v * $v'function ($v) { return $v * $v; }이 라이브러리가 지원 하는 단축키입니다 . 불행히도 PHP는 클로저에 대한 짧은 구문을 지원하지 않지만 이러한 "문자열 람다"는 코드를 더 짧게 만드는 데 사용할 수 있습니다.

where( if동등 함)으로 시작 groupJoin하고 그룹화와 결합 변환을 수행하는 끝나는 더 많은 방법이 있습니다 .

* 내가 개발

참고 URL : https://stackoverflow.com/questions/1266911/does-php-have-an-equivalent-to-pythons-list-comprehension-syntax

반응형