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

なぜ?

どちらの場合も、配列の var_dump は同じ出力を生成します。

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

PHP/5.3.3 ZendServer を実行しています

SMACKS HEAD ...どうすれば明らかなことを見逃すことができますか:)...

4

2 に答える 2

2

あなたが上書きする

$custId 

この行を書くとき

$custId = $custId[1];

その後、予期しないものが得られます

$serial = $custId[2];

だからこうする

list($custId,$serial) = array($custId[1],$custId[2]); 
于 2011-01-24T12:51:21.223 に答える
0
1.    $custId = $custId[1];
2.    $serial = $custId[2]; // **

** これは、元の getExternalId() の ($custId[1])[2] を意味します。

1 行目の後の変数 $custId は、

$custId = getExternalId();

しかし、むしろそれからの 2 番目の要素 (インデックス [1]) のみです。

もう一度だけダンプすることで、デバッグに追加できます

$custId = explode('_', $custId);
var_dump($custId);
$custId = $custId[1];
var_dump($custId);
$serial = $custId[2];
于 2011-01-24T12:52:38.633 に答える