2017-01-30 36 views
0

陣列實施例陣列濾波器僅取出值,而不空格

enter image description here

作爲上述PIC顯示,僅array_filter刪除值,相似的「」沒有空白空間。
對於2值爲空的底部也是因爲它有空白,所以它不會過濾它。
任何解決方案?我嘗試的preg_replace()和修剪()也不能使用空格刪除空值...

+3

請將您的數組添加爲__actual text__ - 不是圖片! – Tom

+0

使用您正在使用的回調來顯示array_filter的代碼;並學習如何複製/粘貼代碼/文本,而不是顯示它的圖像 –

+0

使用str_replace()方法用null替換空白。循環訪問數組,並檢查數值是否爲空格。替換爲(「」)null,然後使用過濾器 – webDev

回答

0

array_filter,如果未提供callback,陣列等於FALSE的所有條目將被刪除。您可以使用array_filtercallback參數來執行此操作。

<?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); 
+0

結果是同樣,沒有變化:( – hanjeahwan

+0

@hanjeahwan你肯定運行相同的代碼提供了?我的結果打印只剩下varC –

+0

@hanjeahwan http://sandbox.onlinephpfunctions.com/code/2a7fee0dfd97d28e73281beec22a07df336b3925 –