陣列實施例陣列濾波器僅取出值,而不空格
作爲上述PIC顯示,僅array_filter刪除值,相似的「」沒有空白空間。
對於2值爲空的底部也是因爲它有空白,所以它不會過濾它。
任何解決方案?我嘗試的preg_replace()和修剪()也不能使用空格刪除空值...
陣列實施例陣列濾波器僅取出值,而不空格
作爲上述PIC顯示,僅array_filter刪除值,相似的「」沒有空白空間。
對於2值爲空的底部也是因爲它有空白,所以它不會過濾它。
任何解決方案?我嘗試的preg_replace()和修剪()也不能使用空格刪除空值...
爲array_filter
,如果未提供callback
,陣列等於FALSE
的所有條目將被刪除。您可以使用array_filter
的callback
參數來執行此操作。
<?php
$array = [
'varA' => '',
'varB' => ' ',
'varC' => '1',
'varD' => ' ',
];
$newArr = array_filter($array, function($v, $k){
return !empty(trim($v));
}, ARRAY_FILTER_USE_BOTH);
var_dump($newArr);
參見:http://php.net/manual/en/function.array-filter.php
編輯:
對於多維數組,可以遍歷陣列,並且對於每個元件執行array_filter。對每個元素執行str_replace
並不是一種好的做法:這會減慢代碼速度,並使代碼更加複雜。
$array = array(
array(
'varA' => '',
'varB' => ' ',
'varC' => '1',
'varD' => ' ',
),
array(
'varA' => '!!!',
'varB' => ' ',
'varC' => 'xxx',
'varD' => '',
)
);
$newArr = $array;
foreach ($newArr as &$each){
$each = array_filter($each, function($v, $k){
return !empty(trim($v));
}, ARRAY_FILTER_USE_BOTH);
}
var_dump($newArr);
結果是同樣,沒有變化:( – hanjeahwan
@hanjeahwan你肯定運行相同的代碼提供了?我的結果打印只剩下varC –
@hanjeahwan http://sandbox.onlinephpfunctions.com/code/2a7fee0dfd97d28e73281beec22a07df336b3925 –
請將您的數組添加爲__actual text__ - 不是圖片! – Tom
使用您正在使用的回調來顯示array_filter的代碼;並學習如何複製/粘貼代碼/文本,而不是顯示它的圖像 –
使用str_replace()方法用null替換空白。循環訪問數組,並檢查數值是否爲空格。替換爲(「」)null,然後使用過濾器 – webDev