2012-03-11 27 views
31

複数のPHP変数を0の値で同時に初期化することもできます配列を使用しないで?私は、次のと本質的に同等であるコードを書きたい:複数のPHP変数を同時に初期化する

$first = 0; 
$second = 0; 
$third = 0; 
$fourth = 0; 
+0

[複数の変数に同じ値を割り当てる](0120)を参照してください。 –

答えて

62
$first = $second = $third = $fourth = 0; 
+0

これは問題が発生しないでしょうか?あなたは$ 4を変更し、残りの部分も変更しますか? – Alec

+2

'$ fourth'を変更した場合、' 0'は参照ではなく値なので、残りの部分は変更しません。あなたが '$ 4 = 0; $ 3 =&$ 4; $ second =&$ fourth; $ first =&$ fourth'の場合、他のすべての変数は '$ 4 '(値' 0 'ではなく)への参照となり、' $ fourth'の変更は他の変数にも反映されます。 – rid

+5

この複数の代入は、PHPでは代入が割り当てられた値を返す式であるために機能します。したがって、 '$ fourth = 0'は値 '0'を返す式です。この値は '$ third 'に代入され、この代入も式であるため、' $ 3 'に' 0 'を代入する戻り値は再び' 0 'などです。 – rid

15

次のように、forループ内のコンマ演算子を使って複数の変数を初期化することが可能ですが:

<?php 
for ($a=0,$b=0,$c=0,$d=0;;) { 
    break; 
} 
var_dump($a,$b,$c,$d); 

(デモhereを参照してください)

リスト構築物は、複数の変数のお尻を実行するために、より効率的な方法を提供しますignmentは、次の例に示すように:

<?php 

list($first, $second, $third, $fourth) = array(0, 0, 0, 0); 
var_dump($first, $second, $third, $fourth); 

参照のデモhere

一つは、複数の初期化された変数を達成するための配列の使用を避けて再考したいと思うかもしれません。 1は、短い配列の構文で使用可能array destructuringを利用した場合、次のようにPHP7.1で+ 1は、単純に、堅牢なコードを書くことがあります。

<?php 

[$first, $second, $third, $fourth ] = [0, 0, 0, 0]; 
var_dump($first, $second, $third, $fourth); 

参照のデモhereを。

初期化される変数が以前に設定されていないことを確認する必要がある場合は、関連するdiscussion、特にこのresponseを参照してください。

+1

このメソッドを使用できます異なる値を持つ複数の変数を宣言するために、これははるかに便利です。 – Alec

+0

@Alecこれは、異なる値で変数を宣言するのにはちょっと混乱します。 –

関連する問題