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는 목록 이해를 지원할 수 있습니다. 메일 링 목록 공지를 참조하세요.
- [PHP-DEV] PHP 용 목록 내포 및 생성기 표현식 (2012 년 6 월 28 일)
그리고 추가 논의 :
- 생성기가 당신을 위해 할 수있는 일 (by ircmaxell; 2012 년 7 월 23 일)-피보나치 예제가 있습니다.
- PHP 5.5의 모습 (NikiC, 2012 년 7 월 10 일)
- 의견 요청 : Generators (Wiki는 2012 년 6 월 5 일에 시작됨)
즉시 사용하지 말고 http://code.google.com/p/php-lc/ 또는 http://code.google.com/p/phparrayplus/를 살펴보십시오 .
.NET에서 Python의 "구문 적으로 달콤한 목록 이해"에 해당하는 것은 LINQ입니다. 그리고 PHP에는 YaLinqo 라이브러리 *를 포함하여 여러 포트가 있습니다 . 구문 론적으로, 오히려 전통적인 구조의 순서보다 더 가까이 SQL로의 for및 if하지만, 기능적으로는 유사 :
$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하고 그룹화와 결합 변환을 수행하는 끝나는 더 많은 방법이 있습니다 .
* 내가 개발
'Program Club' 카테고리의 다른 글
| C 및 C ++에서 산술 연산 전에 short를 int로 변환해야하는 이유는 무엇입니까? (0) | 2020.11.08 |
|---|---|
| Spring Boot Controller 엔드 포인트에 대한 단위 테스트를 작성하는 방법 (0) | 2020.11.08 |
| node.js 용 IDE 및 디버거 (0) | 2020.11.08 |
| std :: future의 상태 가져 오기 (0) | 2020.11.08 |
| 플롯에서 파이썬 데이터 포인트에 레이블 지정 (0) | 2020.11.08 |