我有一个while循环,它就是这样....
while ($fruit_name = current($data)) {
$string1 .= "'".key($data)."',";
next($data);
}
这完美无缺,回声:
'derp','test'
当数组数据=
时Array ( [derp] => 68 [test] => 1 )
但是,如果数组数据=
Array ( [derp] => 0 [test] => 0 )
它回声
nothing,
做什么?
答案 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)
如果您只想要数组中以逗号分隔的键列表,无论其值如何,implode和array_keys的组合可能是更好的方法
$string = implode(',', array_keys($data));