Не сохранять пустые элементы массива в базу данных - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть метабокс с динамическим количеством полей.Если пользователь имеет, скажем, 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 ]

2 голосов
/ 10 ноября 2011

Попробуйте использовать emtpy () следующим образом:

 foreach ($_POST as $key => $data) {
     if ($key == 'mytheme_meta_box_nonce') {
         continue;
     }

     if(!empty($data) && preg_match('/^nivo/i', $key)) {
         $mydata[$key] = $data;
     }
 }
1 голос
/ 10 ноября 2011

Добавьте проверку, чтобы убедиться, что $ 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, вводит в заблуждение.

...