我有以下数组
Array ( [productid] => 3
[newid] => 3
[name] =>
[description] =>
[price] =>
[onlinestock] =>
[weight] =>
[keywords] =>
[longdescription] =>
[graphic1] => 89.jpeg
[graphic2] =>
[parameter1] =>
[parameter2] =>
[category1id] => 101
[category2id] =>
[category3id] =>
[category4id] =>
[category5id] =>
[extra1] =>
[extra2] =>
[extra3] =>
[group1id] => 1575
[groupprice1] => 0
[group2id] => 1576
[groupprice2] => 0
[group3id] => 1577
[groupprice3] => 0
[group4id] => 1578
[groupprice4] => 0
[group5id] => 1579
[groupprice5] => 0
我正在执行以下操作来检查空值
if (empty($_REQUEST["category1id"])){
$_REQUEST["category1id"] = 0;
}else if (empty($_REQUEST["category2id"])){
$_REQUEST["category2id"] = 0;
}else if (empty($_REQUEST["category3id"])){
$_REQUEST["category3id"] = 0;
}else if (empty($_REQUEST["category4id"])){
$_REQUEST["category4id"] = 0;
}else if (empty($_REQUEST["category5id"])){
$_REQUEST["category5id"] = 0;
}else if (empty($_REQUEST["price"])){
$_REQUEST["price"] = 0;
}else if (empty($_REQUEST["onlinestock"])){
$_REQUEST["onlinestock"] = 0;
}else if (empty($_REQUEST["weight"])){
$_REQUEST["weight"] = 0;
}
但不知怎的,它没有检测到任何这些值为空?我不知道这可能是什么我试过$ _REQUEST ['category1id'] ==“”这也没有用。任何帮助将不胜感激
答案 0 :(得分:7)
你的逻辑是有缺陷的。使用else if
时,只有条件才会匹配先前条件返回的位置false
。摆脱每个else
它应该有效。
答案 1 :(得分:4)
佩卡是100%正确的。但我认为改变你的方法会更容易。用这个循环替换整个if/else
块:
foreach ($_POST as &$post) {
$post = empty($post) ? 0 : $post;
}
答案 2 :(得分:2)
上面的好评,主要是不要使用$ _REQUEST:
$_REQUEST contains: $_COOKIE, $_GET, and $_POST variables
如果您使用$ _REQUEST,则无法保证数据来自POST,这会导致脚本出现安全漏洞。明确声明你想要的东西$ _POST / $ _ GET。
另请阅读empty()
fn文档
同样查看isset()
- (确定变量是否已设置且不为NULL):
答案 3 :(得分:0)
我想你可能想要了解那里发生的事情。对于你试图做的某些时候我曾经使用过isset。如果答案应该考虑其他。