2012-03-12 19 views
0

私はちょっと疑問に思っています。完璧な回避策がありますが、問題が本当に何かを知りたいのですが。array_keysの奇妙な振る舞い

私は配列($ lines)を基になる連想配列で構成しました。 、その後、

Warning: array_keys() expects parameter 1 to be array, null given

しかし:私はそれらの基礎となる配列の(基本的には任意のランダムな1)1のインデックスを取得したいので、私は使用します。

$headers = array_keys($lines[0]); 

しかし、これは私に次のエラーが戻っていますこれを代わりに使用すると、次のようになります。

$line0 = $lines[0]; 
$headers = array_keys($line0); 

すべては、私が望むとおりに動作します。私が見る限り、これら2つは完全に同等であるはずです。したがって、これがPHPのバグかどうか、あるいはここで何かを理解していないと思っていました。私は再現できない

Array (
    [0] => Array 
     (
      [id] => 00 
      [name] => John Doe 
     ) 
    [1] => Array 
     (
      [id] => 007 
      [name] => James Bond 
     ) 
) 
+1

に提出する必要があり、その後その場合、確認するためにできるだけ数行で問題を書くのか? –

+1

どのPHPバージョンも同様です。これは再現可能ですか? –

+0

私は質問に追加しました。不完全な情報を与えて申し訳ありません。 – GijsW

答えて

2

PHPのバージョンが5.3.1

$ライン・アレイは私のテストケースには、次のようになります。私は、次のファイルに書いた :

<?php 

$lines = array(
    array("A" => 1, "B" => 2, "C" => 3), 
    array("A" => 1, "B" => 2, "C" => 3), 
    array("A" => 1, "B" => 2, "C" => 3) 
); 

echo "<pre>"; 
var_dump(array_keys($lines[0])); 
echo "</pre>"; 

をそして、それは正しく出力:

array(3) { 
    [0]=> 
    string(1) "A" 
    [1]=> 
    string(1) "B" 
    [2]=> 
    string(1) "C" 
} 

だから私はそれはあなたのプログラムやPHPのバージョンではバグではなく、何も「ノーマル」のどちらかだと思います。

+1

どのバージョンを使用していますか? – GijsW

+0

私は '<?php $ a = array(0 => array( 'a' => 'test'))と書くと、5.3.8 – user978548

+1

を使っています。 array_keys($ a [0]); '? – user978548

1

試してみて、あなたが作成し直すことができれば、あなたが何であるかを$ラインをプリントアウトすることができますhttp://bugs.php.net