2017-03-22 4 views
1

私たちはそれが正しいかどうかわからない振る舞いを見つけました。PHP:参照では存在しない配列項目を渡すとヌルとして追加されます

<?php 
$a = []; 
$b = []; 
$a[] = 'Hello'; 
$b[] = 'Bye'; 
if (isset($b[1])) 
{ 
    $b1 = $b[1]; 
} 
$a1 = defaultValue($a[1], 'again'); 
print_r($a); 
print_r($b); 
exit; 
function defaultValue(&$var, $val) 
{ 
    return isset($var) ? $var : $val; 
} 

結果だった:

Array 
(
    [0] => Hello 
    [1] => 
) 
Array 
(
    [0] => Bye 
) 

はなぜ項目は、[1]に作成されたドル

は、次のコードを表示してください?ありがとう!

答えて

1

これは、マニュアルで説明しています: http://php.net/manual/en/language.references.whatdo.php

注:あなたは、割り当てるパス、または参照によって未定義の変数を返す場合 、それが作成されます。

したがって、未定義の参照を渡すと、nullとして作成されます。 Issetは、nullを設定し、異なるものにする必要があります。したがって、値 "again"が返されます。

+0

ありがとう。私はマニュアルで、明らかに適切な用語ではないことを探しました。 – jhernandis

+0

Thankis @ gabriel-heming – jhernandis

+0

@jhernandisようこそ。それは一般的な知識ではありません。 –

関連する問題