2010-12-11 15 views
0

PHPのこのスニペットの最終結果である$arrayParamsとの違いはわかりません。php配列:違いを見つけてください!

この関数は、文字列$typesと、別のパラメータ$paramsを取ります。 $params自体は、任意の型の単一の値または任意の型の値の配列にすることができます。

このコードの目的は、後でcall_user_func_array()にバインドすることです。

最後の$arrayParams変数は、元の$types文字列としてインデックス0の配列である必要があります。その後、次のインデックスは、$paramsとして渡される文字列の参照になります。アレイは、すべてのキーを示しているのと同じ値へのポインタである第1の後$paramsを通過

$array_params
if(is_array($params)) { 
    // Make a new array, first index is $types string. 
    $arrayParams = array($types); 

    // Loop over $params array and add the pointer of each index to $arrayParams. 
    // ??? This doesn't seem to be working ??? 
    foreach($params as $p) { 
    $arrayParams[] = &$p; 
    } 
} 
else { 
    // This works fine here, very simple. 
    $arrayParams = array($types, &$params); 
} 

var_dump、(?)

答えて

2
// ... 
foreach($params as &$p) { 
    $arrayParams[] = &$p; 
} 
unset($p); 
// ... 

foreach$paramsのコピー上で動作します反復で参照を使用することを指定しない限り、-array。

+0

$ pを設定解除する必要があるのはなぜですか? – Greg

+0

@Greg [こちらの警告](http://php.net/manual/en/control-structures.foreach.php)を参照してください。 –

+0

チップの「未設定」のために受け入れられた答え。ありがとう:) – Greg

関連する問題