我有一个动态数量的字段的元数据箱。如果用户有3个字段,并且填写了#1和#3,我希望这不会为#2保存空值。这是在数组中保存空项(... [2] => [3] => foo [4] ...)。如何防止用户未填写的字段保存这些空值?
$mydata = array();
foreach ($_POST as $key => $data) {
if ($key == 'mytheme_meta_box_nonce')
continue;
if(preg_match('/^nivo/i', $key)) {
$mydata[$key] = $data;
}
}
update_post_meta($post_id, slideshow, $mydata);
return $mydata;
答案 0 :(得分:2)
尝试像这样使用empty():
foreach ($_POST as $key => $data) {
if ($key == 'mytheme_meta_box_nonce') {
continue;
}
if(!empty($data) && preg_match('/^nivo/i', $key)) {
$mydata[$key] = $data;
}
}
答案 1 :(得分:1)
添加一项检查以确保$ data包含以下内容:
if ((preg_match('/^nivo/i', $key)) &&
(!empty($data))) {
此代码与OP无关,演示了通过评论对话产生的代码。
$strlen = strlen('');
var_dump($strlen); // Echos int(0)
var_dump($strlen === false); // Echos false
var_dump($strlen === 0); // Echos true
var_dump((bool) $strlen === false); // Echos true
PHP是一种松散类型的语言,因此从strlen返回false的外观会产生误导。