2016-12-28 10 views
-1

ここでは多次元配列があり、空の配列を削除したいと考えています。多次元配列から空の配列を削除するには?

$exclude1=array(

array(

    [0] => Last Updated: Thu Apr 21 17:03:23 2016 PST 

) 
Array 

(

    [0] => 

) 

Array 

(

[0]=> 

) 

Array 

(

    [0] => MODEL: MODEL_NC 

) 

) 

空の配列を削除します。私はこれを試した:

$exclude1=array_filter(array_map('array_filter', $exclude1)); 

しかし、それは動作していません。あなただけ行うことができるはず配列から空の配列を削除するには

$exclude1=array_filter($exclude1, function($v){return count($v) == 0 ? false : true;}); 
+0

それは警告を与えているarray_filter iが使用:array_filter():構文解析エラー:最初の引数は、それがその線解析エラーでERORを与えている配列 –

答えて

0

使用array_filter

$newArray = array_filter($exclude1); 

は、この情報がお役に立てば幸い!

+0

なければなりません、予期しないT_FUNCTION –

+0

これは何を説明できますか? – axlj

+0

downvoteの理由 –

0

:この方法のように

+0

解析エラー、予期しないT_FUNCTION –

+0

あなたはどのバージョンのPHPを使用していますか? –

+0

PHPバージョン5.0.5 –

1

あなたの現在の配列の値は次のとおりです。

$exclude1 = array(
    array("Last Updated: Thu Apr 21 17:03:23 2016 PST"), 
    array(""), 
    array(""), 
    array("MODEL: MODEL_NC"), 
); 

は、現在のアレイの出力を参照してください。

echo "<pre>"; 
print_r($exclude1); 

出力されます::follwoingは次のようにそれは見てい

Array 
(
    [0] => Array 
     (
      [0] => Last Updated: Thu Apr 21 17:03:23 2016 PST 
     ) 

    [1] => Array 
     (
      [0] => 
     ) 

    [2] => Array 
     (
      [0] => 
     ) 

    [3] => Array 
     (
      [0] => MODEL: MODEL_NC 
     ) 

) 

使用array_filterと

$newArray = array_filter(array_map('array_filter', $exclude1)); 

をarray_mapを最終的な出力を確認してください

Array ( [0] => Array ( [0] => Last Updated: Thu Apr 21 17:03:23 2016 PST ) [3] => Array ( [0] => MODEL: MODEL_NC ) 

これで、以前の多次元配列から空の配列が削除されます。

第二の道

function array_remove_null($array) { 
    foreach ($array as $key => $value) 
    { 
     if(is_null($value)) 
      unset($array[$key]); 
     if(is_array($value)) 
      $array[$key] = array_remove_null($value); 
    } 
    return $array; 
} 

第三の道:

$arr = array_filter_recursive($arr); 
$arr = array_filter($arr); 

参考:あなたのコードでhttp://php.net/manual/en/function.array-filter.php

+0

警告:array_filter():最初の引数は配列でなければなりません –

+0

$ exclude1に 'array'が1つあり、要素として4つの配列がありますか? –

+0

はい多次元配列 –

1

は、あなたが誤ってarray_filterを使用し、あなたがそのmenualを確認することができます。

array array_filter (array $array [, callable $callback [, int $flag = 0 ]])

このように使用できます。

<?php 
$exclude1=array(
    ['Last Updated: Thu Apr 21 17:03:23 2016 PST'], 
    [null], 
    [null], 
    ['MODEL: MODEL_NC'] 
); 
unset($exclude1[1][0]); //this make the array empty as you question. 
unset($exclude1[2][0]); 
var_dump($exclude1); 
$exclude1=array_filter($exclude1, function($v){return count($v) == 0 ? false : true;}); 
var_dump($exclude1); 

と出力:

[email protected]:~$ php test.php 
array(4) { 
    [0]=> 
    array(1) { 
    [0]=> 
    string(42) "Last Updated: Thu Apr 21 17:03:23 2016 PST" 
    } 
    [1]=> 
    array(0) { 
    } 
    [2]=> 
    array(0) { 
    } 
    [3]=> 
    array(1) { 
    [0]=> 
    string(15) "MODEL: MODEL_NC" 
    } 
} 
array(2) { 
    [0]=> 
    array(1) { 
    [0]=> 
    string(42) "Last Updated: Thu Apr 21 17:03:23 2016 PST" 
    } 
    [3]=> 
    array(1) { 
    [0]=> 
    string(15) "MODEL: MODEL_NC" 
    } 
}