0

私の配列は次の構造です。フォームから送信されたファイルの配列です。フォームに複数の入力フィールドがあります。ただし、ユーザーが一部のフィールドを空白のままにすると、配列は次のように表示されます。次に、それをデータベースに書き込みます。空のフィールドを書きたくない。

関数を使用してみarray_filter()ましたが、配列が完全に空ではないため機能しません。エラー要素は に設定され4ます。どうすればいいのですか?

Array
(
    [0] => Array
        (
            [name] => stock-photo-cup-icons-tea-and-coffee-raster-version-109119257.jpg
            [type] => image/jpeg
            [tmp_name] => /tmp/phpqWWM9X
            [error] => 0
            [size] => 30609
        )

    [1] => Array
        (
            [name] => 
            [type] => 
            [tmp_name] => 
            [error] => 4
            [size] => 0
        )

    [2] => Array
        (
            [name] => 
            [type] => 
            [tmp_name] => 
            [error] => 4
            [size] => 0
        )

    [3] => Array
        (
            [name] => 
            [type] => 
            [tmp_name] => 
            [error] => 4
            [size] => 0
        )

)
4

4 に答える 4

1

(オプションの) コールバックを に渡すことができますarray_filter():

$filteredArray = array_filter($source, function($item) {
    return ($item['size'] > 0 && $item['error'] === 0);
});

var_dump($filteredArray);

デモ: http://codepad.viper-7.com/uocPT6

于 2013-02-07T19:56:58.590 に答える
0
for($i=0;$i<count($theArray);$i++)
{
    if($theArray[$i]['error']==4) 
    { 
        unset($theArray[$i]); 
    }
}

私はそのようにします

于 2013-02-07T19:54:18.420 に答える
0

この簡単なスクリプト:

foreach ($array as &$a) {
    $todel = false;
    foreach ($a as $k => $v) {
        if (empty($v)) { // condition to consider a variable empty
            $todel = true; break;
        }
    }
    if ($todel) unset($a);
}

正常に動作するはずです。そのコードはそれ自体をほとんど説明していると思います。ここで行っているのは、$array(メイン配列) のforeach ループに入り、($a参照によって渡された) サブ配列に空の値があるかどうかを確認することです。もしそうなら、現在のサブ配列を設定解除する設定を$todel = true(そしてbreak;効率のために)行っています。$a

于 2013-02-07T19:48:14.113 に答える
-1

単純な条件を使用する

if(error == 0){
    //insert here
}else{
   //do nothing
}
于 2013-02-07T19:45:44.487 に答える