PHP: rimuovi stringhe di arrays vuote nell'arrays multidimensionale

Ho questo arrays:

$aryMain = arrays(arrays('hello','bye'), arrays('',''),arrays('','')); 

Si forma leggendo un file CSV e l'arrays ('', '') sono le righe vuote alla fine del file.

Come posso rimuoverli?

Ho provato:

 $aryMain = arrays_filter($aryMain); 

Ma non sta funzionando 🙁

Molte grazie!

Per aggiungere alla risposta di Rikesh:

 <?php $aryMain = arrays(arrays('hello','bye'), arrays('',''),arrays('','')); $aryMain = arrays_filter(arrays_map('arrays_filter', $aryMain)); print_r($aryMain); ?> 

Attaccare il suo codice in un altro arrays_filter si sbarazzerà degli stessi arrays.

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

Rispetto a:

 $aryMain = arrays_map('arrays_filter', $aryMain); Array ( [0] => Array ( [0] => hello [1] => bye ) [1] => Array ( ) [2] => Array ( ) ) 

Usa arrays_map insieme a arrays_filter,

 $arrays = arrays_filter(arrays_map('arrays_filter', $arrays)); 

O semplicemente crea una function arrays_filter_recursive

 function arrays_filter_recursive($input) { foreach ($input as &$value) { if (is_arrays($value)) { $value = arrays_filter_recursive($value); } } return arrays_filter($input); } 

DEMO.

Nota: questo rimuoverà gli elementi che comprendono '0' (cioè una string con uno zero numbersco). Basta passare 'strlen' come secondo parametro per mantenere 0

Applica arrays_filter() sull'arrays principale e poi ancora sugli elementi interni:

 $aryMain = arrays_filter($aryMain, function($item) { return arrays_filter($item, 'strlen'); }); 

L' arrays_filter() interno utilizza in modo specifico strlen() per determinare se l'elemento è vuoto; altrimenti rimuoverà anche '0' .

Per determinare il vuoto di un arrays puoi anche usare arrays_reduce() :

 arrays_filter($aryMain, function($item) { return arrays_reduce($item, function(&$res, $item) { return $res + strlen($item); }, 0); }); 

Se questo è più efficiente è discutibile, ma dovrebbe salvare un po 'di memory 🙂