マニュアルによると「作成した配列を返します。 互いの配列の要素の数が合致しない場合や空の配列である場合に FALSE を返します。」とのことなので、 普通に考えてプログラムとしては、配列型か、BOOL型のFALSEが帰ってくることを想定して作り込むと思います。 ところが、調べてみるとNULLが帰ってくることもあるようです。 バグなのか仕様なのかは分かりません。
同じ要素数の配列同士を組み合わせる。
var_dump(array_combine(array(1), array(1)));
array(1) {
[1]=>
int(1)
}
空の配列同士を組み合わせる。んー、これはFALSEでいいのかな…。
var_dump(array_combine(array(), array()));
Warning: array_combine(): Both parameters should have at least 1 element in /Users/suin/test.php on line 5 bool(false)
要素数が異なる配列同士を組み合わせる。
var_dump(array_combine(array(1, 2), array(1)));
Warning: array_combine(): Both parameters should have an equal number of elements in /Users/suin/test.php on line 7 bool(false)
NULLと配列を組み合わせる。
var_dump(array_combine(null, array(1)));
Warning: array_combine() expects parameter 1 to be array, null given in /Users/suin/test.php on line 9 NULL
文字列と配列を組み合わせる。
var_dump(array_combine('string', array(1)));
Warning: array_combine() expects parameter 1 to be array, string given in /Users/suin/test.php on line 11 NULL
オブジェクトと配列を組み合わせる。
var_dump(array_combine(new stdClass, array(1)));
Warning: array_combine() expects parameter 1 to be array, object given in /Users/suin/test.php on line 14 NULL
$newArray = array_combine($keys, $values);
if ( $newArray === false )
{
// エラー処理
// NULLはエラー処理の対象にならない。
}
array_combine()の引数が変数になっている場合、その変数が本当に配列型か確認してからarray_combine()にかけたほうがいいでしょう。
トラバURL : http://suin.asia/trackback/485
氷川 XOOPS Module 開発室