2012-03-12 26 views
0

我有一個簡短的問題,我一直在想。有一個完美的解決方法,但我想知道問題究竟是什麼。我有一個數組($行)由底層關聯數組組成。我想其中的一個基本陣列的指數(基本上任何隨機一個),所以我用:array_keys的奇怪行爲

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

然而,這給我回了以下錯誤:

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

但隨後,當我用這個代替時:

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

一切正常,因爲我想要它。現在據我所知,這兩個應該完全等價,所以我想知道這是PHP中的一個錯誤,還是我只是在這裏理解不了。

PHP版本5.3.1是

的$線陣列看起來像這樣在我的測試案例:

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

可以打印出什麼$行是什麼? – 2012-03-12 09:30:01

+1

哪個PHP版本也是如此。這是可重複的嗎? – 2012-03-12 09:31:35

+0

我已將它添加到問題中。抱歉提供不完整的信息。 – GijsW 2012-03-12 09:36:26

回答

2

我無法重現。 我寫了下面的文件:

<?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 2012-03-12 09:44:11

+0

我正在使用5.3.8 – user978548 2012-03-12 09:47:39

+1

如果你寫'<?php $ a = array(0 => array('a'=>'test')) array_keys($ a [0]);'? – user978548 2012-03-12 09:50:53

1

嘗試寫出來作爲幾行儘可能的問題,以查看是否可以重新創建,如果是的話,那麼你需要提交http://bugs.php.net