删除空数组元素后进行json_encode

3
我有一个简单的数组。
$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
2个回答

5

试试这个:

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

这将重置您的数组键为连续序列。请考虑数组键的工作原理:
$a = ['a', 'b'];       // [0 => 'a', 1 => 'b']
unset($a[0]);          // [1 => 'b']
$a = array_values($a); // [0 => 'b']

谢谢,非常有效,你回答得最快,所以我标记为答案。 - Itsmeromka

4

这将重置数组键

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接