1. ホーム
  2. php

[解決済み] PHPにはPythonのリスト内包構文に相当するものがありますか?

2023-07-03 06:28:06

質問

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で同様のリスト内包構文を得る方法はありますか?PHP5.3の新機能でそれを行う方法はありますか?

ありがとうございます!

どのように解決するのですか?

こんな感じでしょうか?

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

これは PHP 5.3+ で動作しますが、古いバージョンでは 配列マップ に対して個別にコールバックを定義する必要があります。

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