4

繰り返し処理している foreach ループがあります。次のように、変数を断片に「分解」し、list() を使用してそれぞれの配列に追加しようとしています。

list($a[], $b[], $c[]) = explode(':', $loop);

list() でこれを行うことはできませんか? でエラーになります

致命的なエラー: [] 演算子は文字列ではサポートされていません

次のように、list() で一時変数を使用して、後でそれぞれの配列に追加できると思います。

foreach($array as $loop) {
    list($a1, $b2, $c3) = explode(':', $loop);

    $a[] = $a1;
    $b[] = $b2;
    $c[] = $c3;
}

これを行うためのより良い/より効率的な方法はありますか (list() を完全に使用するなど)?

4

2 に答える 2

2

list構造には、配列やインデックスのように、有効な変数式が必要です。

foreach ($array as $i => $loop) {
    list($a[$i], $b[$i], $c[$i]) = explode(':', $loop);
}

その後、すべてが機能します。デモ

また、それが実際に配列である場合は、それも機能します。

$a = $b = $c = array();

foreach ($array as $loop) {
    list($a[], $b[], $c[]) = explode(':', $loop);
}

デモ

于 2012-10-14T22:12:37.823 に答える
1

はい、できます..Index変数を初期化せずに追加するだけです

list($a[0], $b[0], $c[0]) = explode(":","A:B:C") ;
var_dump($a,$b,$c);

または変数を初期化します

$a = $b = $c = array();
list($a[], $b[], $c[]) = explode(":","A:B:C") ;
var_dump($a,$b,$c);

出力

array
  0 => string 'A' (length=1)
array
  0 => string 'B' (length=1)
array
  0 => string 'C' (length=1)
于 2012-10-14T22:11:12.990 に答える