2011-01-24 3 views
0

は、これは私がこれはなぜ割り当ての順序を変更して変数の内容を変更するのですか?

$custId = getExternalId(); 
echo $custId . "\n"; // Prints foobar_16262499_1 
$serial = ''; 

$custId = explode('_', $custId); 
var_dump($custId); 
$custId = $custId[1]; 
$serial = $custId[2]; 

die("custId: $custId serial: $serial\n"); 

を実行した場合、私はこれが正しくない

custId: 16262499 serial: 2 

を取得

:)をしてください説明します。シリアルは1でなければなりません。しかし、私は

$custId = getExternalId(); 
echo $custId . "\n"; // Prints foobar_16262499_1 
$serial = ''; 

$custId = explode('_', $custId); 
var_dump($custId); 
$serial = $custId[2]; // Change order here!!! 
$custId = $custId[1]; 

die("custId: $custId serial: $serial\n"); 

への割り当ての順序を変更する場合、それは動作しますし、私

custId: 16262499 serial: 1 

WHYになりますか?

配列ののvar_dumpが同じ出力生成両方の場合で:

array(3) { 
    [0]=> 
    string(4) "foobar" 
    [1]=> 
    string(8) "16262499" 
    [2]=> 
    string(1) "1" 
} 

を私はPHP/5.3.3を実行しているZendServer

私は欠場可能性がどのようにHEADを...萌芽明らかに:)...あなたは上書き

答えて

2

$custId 

この行

$custId = $custId[1]; 

を書くときに、その後、あなたが

$serial = $custId[2]; 

はので、これは本当に意味**この

list($custId,$serial) = array($custId[1],$custId[2]); 
0
1. $custId = $custId[1]; 
2. $serial = $custId[2]; // ** 

好きです期待しない何かを得ます、元のgetExternalId()の($ custId [1])[2]。

は、1行目の後に変数$ CUSTIDはもはや

$custId = getExternalId(); 

むしろ第二の要素(インデックス[1])、それからの結果ではありませんので。

ちょうど1より多くの時間をダンプすることにより、デバッグに追加することができます

$custId = explode('_', $custId); 
var_dump($custId); 
$custId = $custId[1]; 
var_dump($custId); 
$serial = $custId[2]; 
関連する問題