array_keys的奇怪行为

时间:2012-03-12 09:28:28

标签: php arrays associative-array

我有一个简短的问题,我一直想知道一段时间。有一个完美的解决方法,但我想知道问题到底是什么。

我有一个由底层关联数组组成的数组($ lines)。我想得到那些基础数组的索引(基本上是任意一个),所以我使用:

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

然而,这给了我以下错误:

  

警告:array_keys()期望参数1为数组,给定

为null

但是,当我使用它时:

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

一切都按照我的要求运作。现在据我所知,这两个应该是完全等价的,所以我想知道这是PHP中的错误,还是我在这里不理解的东西。

PHP版本是5.3.1

在我的测试用例中,$ lines数组看起来像这样:

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

尝试并尽可能少地写出问题以确定是否可以重新创建,如果是,那么您需要提交到http://bugs.php.net