【发布时间】:2020-12-28 14:56:55
【问题描述】:
我正在尝试从kat 数组中删除所有空字符串""。我尝试通过使用array_filter 函数来做到这一点:
$array = array_filter($array, "strlen");
问题是kat[4] 现在是一个对象而不是一个数组。
知道如何在不将它们转换为对象的情况下从数组中删除空字符串吗?
之前
之后
【问题讨论】:
标签: php arrays array-filter
我正在尝试从kat 数组中删除所有空字符串""。我尝试通过使用array_filter 函数来做到这一点:
$array = array_filter($array, "strlen");
问题是kat[4] 现在是一个对象而不是一个数组。
知道如何在不将它们转换为对象的情况下从数组中删除空字符串吗?
之前
之后
【问题讨论】:
标签: php arrays array-filter
选项 1:
$array = array_filter($array, "strlen");
var_dump(json_decode(json_encode($array), true));
选项 2:
<?php
$kat = [
["kat", "1"],
["kat", "1"],
["kat", "1", ""],
["", 'kat', "1.3"],
];
var_dump(array_map('array_filter', $kat));
【讨论】:
如果过滤引入了键/索引跳转/间隙,您可以通过使用 array_values() 重新索引数组来避免在将 Php 数组编码为 JSON 时出现对象。
如果您的 Php 数组中有 0 个索引顺序键,则在编码为 JSON 时它们将成为 Javascript 数组。
<?php
$data =
[
[
'', 'foo', 'bar'
],
[
'baz', 'bat'
]
];
$filtered =
array_map(
function($v) {
return array_values(
array_filter($v, 'strlen')
);
},
$data
);
var_export($filtered);
$json = json_encode($filtered);
var_dump($json);
输出:
array (
0 =>
array (
0 => 'foo',
1 => 'bar',
),
1 =>
array (
0 => 'baz',
1 => 'bat',
),
)
string(29) "[["foo","bar"],["baz","bat"]]"
【讨论】: