当值= 0时,键($ data)没有按预期工作?

时间:2012-03-05 17:22:07

标签: php

我有一个while循环,它就是这样....

        while ($fruit_name = current($data)) {
            $string1 .= "'".key($data)."',";
            next($data);
        }

这完美无缺,回声:

'derp','test'

当数组数据=

Array ( [derp] => 68 [test] => 1 )

但是,如果数组数据=

Array ( [derp] => 0 [test] => 0 )

它回声

  nothing,

做什么?

3 个答案:

答案 0 :(得分:2)

如果你想手动遍历一个数组,你必须使用each,因为你发现 - 没有办法区分负结果current和假值。即使您使用=== false进行检查,如果数组包含false条目,您仍然会失败。

但是,您应该只使用foreach代替:

foreach ($data as $k=>$fruit_name) {
    $string1 .= "'". $k . "',";
}

答案 1 :(得分:1)

PHP将0计为false,终止你的while循环,允许0你需要进行类型敏感的比较:

while (($fruit_name = current($data)) !== false) {
    $string1 .= "'".key($data)."',";
    next($data);
}

答案 2 :(得分:0)

如果您只想要数组中以逗号分隔的键列表,无论其值如何,implodearray_keys的组合可能是更好的方法

$string = implode(',', array_keys($data));