7

私は連想配列を持っています:$csv_arr

Array
(
    [0] => Array
        (
            [Enfalac] => alpha linolenic acid 300 mg
            [Enfapro] => alpha linolenic acid 200 mg
        )

    [1] => Array
        (
            [Enfalac] => arachidonic acid 170 mg
            [Enfapro] => 
        )

    [2] => Array
        (
            [Enfalac] => 
            [Enfapro] => 
        )

    [3] => Array
        (
            [Enfalac] => calcium 410 mg
            [Enfapro] => calcium 550 mg
        )
)

$csv_arr[2]などの完全に空のエントリをすべて削除するにはどうすればよいですか?$csv_arr[1]

私は試しまし$csv_arr = array_filter(array_map('array_filter', $csv_arr));たが、これは空の要素を削除します:$csv_arr[1]['Enfapro']

どうも

4

5 に答える 5

0

これがこれに対するより適切で適切な解決策だと思います。

コードは次のとおりです。

$arr[0]['id'] = "id1";
$arr[0]['name'] = "testing";
$arr[1]['id'] = "id2";
$arr[1]['name'] = "another";
$arr[2]['id'] = "";
$arr[2]['name'] = "";
$d = array_keys($arr);
foreach($arr as $key=>$values){
    $a = array_keys($values);
    $n = count($a);
    for($i=0,$count=0;$i<$n;$i++){
        if($values[$a[$i]]==NULL){
            $count++;
        }
    }
    if($count==$n){

        unset($arr[$key]);
    }
}
echo "<pre>";
print_r($arr);

これをよりネストされた連想配列で機能させたい場合は、再帰関数で同じものを実装できます。

ありがとう、ニラフ

于 2013-07-29T12:49:19.933 に答える
0

OK、みんな助けてくれてありがとう。私はループでこのようにすることができました。

if(implode('',$csv_arr[$i])==''){
    unset($csv_arr[$i]);
}
于 2013-07-29T12:09:01.367 に答える