我有這樣的陣列:PHP:刪除空字符串數組在多維數組
$aryMain = array(array('hello','bye'), array('',''),array('',''));
它是由在端部讀取csv文件和陣列(「」,「」)是空行形成文件。
我該如何刪除它們?
我已經試過:
$aryMain = array_filter($aryMain);
但它不工作:(
非常感謝
我有這樣的陣列:PHP:刪除空字符串數組在多維數組
$aryMain = array(array('hello','bye'), array('',''),array('',''));
它是由在端部讀取csv文件和陣列(「」,「」)是空行形成文件。
我該如何刪除它們?
我已經試過:
$aryMain = array_filter($aryMain);
但它不工作:(
非常感謝
爲了增加Rikesh的回答是:
<?php
$aryMain = array(array('hello','bye'), array('',''),array('',''));
$aryMain = array_filter(array_map('array_filter', $aryMain));
print_r($aryMain);
?>
堅持自己的代碼轉換成另一種array_filter將擺脫整個陣列本身。
Array
(
[0] => Array
(
[0] => hello
[1] => bye
)
)
相比:
$aryMain = array_map('array_filter', $aryMain);
Array
(
[0] => Array
(
[0] => hello
[1] => bye
)
[1] => Array
(
)
[2] => Array
(
)
)
@MiguelMas請記住,像'0'這樣的字符串也會以這種方式被刪除。 – 2013-05-14 07:17:17
使用array_map與array_filter一起,
$array = array_filter(array_map('array_filter', $array));
或者只!創建一個array_filter_recursive
函數
function array_filter_recursive($input)
{
foreach ($input as &$value)
{
if (is_array($value))
{
$value = array_filter_recursive($value);
}
}
return array_filter($input);
}
注:這將移除包含 '0' 的項目(即帶數字零的字符串)。只是通過'strlen'
作爲第二個參數,以保持0
Upvoted因爲strlen提示! – MarkokraM 2017-01-31 04:35:15
在所述內元件的主陣列上應用array_filter()
然後再次:
$aryMain = array_filter($aryMain, function($item) {
return array_filter($item, 'strlen');
});
內array_filter()
具體使用strlen()
,以確定是否該元件是空的;否則它會刪除'0'
。
要確定一個數組的空虛,你也可以使用array_reduce()
:
array_filter($aryMain, function($item) {
return array_reduce($item, function(&$res, $item) {
return $res + strlen($item);
}, 0);
});
這是否是更有效的是值得商榷的,但它應該節省一些內存:)
爲什麼不直接跳過這些空行第一個地方? – 2013-05-14 07:03:30