2014-03-05 86 views
2

我有簡單的數組刪除空數組元素json_encode後

$a = ['a', '', 'b','c','d']; 

如果我json_encode它我還得

["a","","b","c","d"] 

但是,如果我會嘗試刪除空值,與array_filterarray_diff

我會有

{"0":"a","2":"b","3":"c","4":"d"} 

,但我不需要被編碼數組鍵,我需要沒有空元素和不數組鍵編碼的陣列,如何解決?

PHP的沙箱例如:http://sandbox.onlinephpfunctions.com/code/91635a5df7fcd954dd64fe92089f2beadc81c3c4

回答

4

試試這個:

$a = array_values(array_filter($a)); 

這將重置您的數組的鍵是連續的。考慮數組的鍵是如何工作的:

$a = ['a', 'b'];  // [0 => 'a', 1 => 'b'] 
unset($a[0]);   // [1 => 'b'] 
$a = array_values($a); // [0 => 'b'] 
+0

謝謝你,就像一個魅力,你的回答第一,所以我標記爲答案 – MyMomSaysIamSpecial

3

這將重置數組的鍵

$a = ['a', '', 'b', 'c', 'd']; 
echo json_encode(array_values(array_filter($a)));