不将空数组项保存到数据库中

时间:2011-11-09 22:13:25

标签: php arrays wordpress null

我有一个动态数量的字段的元数据箱。如果用户有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;

2 个答案:

答案 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的外观会产生误导。