尝试在将代码添加到Production之前测试我的代码,但为什么foreach循环只将3个值传递给$strokes
而不是所有4个$_POST
数组值。其中一个是0
。
$_POST = array("h1" => 1, "h2" => 2, "h3" => 3, "h4" => 0);
$strokes = array();
$strokes_keys = array('h1', 'h2', 'h3', 'h4');
foreach ($strokes_keys as $stroke) {
if ($_POST[$stroke]) {
array_push($strokes, $_POST[$stroke]);
}
}
$counts = count($strokes);
var_dump($strokes);
var_dump($counts);
结果:
Success time: 0.04 memory: 52480 signal:0
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
int(3)
答案 0 :(得分:5)
array_push($strokes, $_POST[$stroke]);
未针对最后一项执行,因为零等于false
。也许你应该尝试:
if (isset($_POST[$stroke])) {
array_push($strokes, $_POST[$stroke]);
}
代替。
答案 1 :(得分:0)
这是因为if ($_POST[$stroke])
评估为false
如果$ _POST [' stroke']为零(或空字符串,null
,{{ 1}})。
在这里,您可以找到有关各种类型的比较的更多信息: http://php.net/manual/en/types.comparisons.php
也许你应该写下你的条件:
false