2

我有简单的数组

$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

2 回答 2

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']
于 2014-03-05T11:53:52.533 回答
3

这将重置数组键

$a = ['a', '', 'b', 'c', 'd'];
echo json_encode(array_values(array_filter($a)));
于 2014-03-05T11:54:23.423 回答