在PHP中删除从关联数组键的特定记录
您好我有一个包含具有以下结构两个数组的数组:在PHP中删除从关联数组键的特定记录
categories [
"lvl0" => array:2 [
0 => "Cleaning"
1 => "Bread"
]
"lvl1" => array:2 [
0 => null
1 => "Bread > rolls"
]
]
我想从“LVL1”数组中删除NULL的任何记录,但一直未能找到正确的方法来做到这一点。
我曾尝试:
array_filter($categories['lvl1'])
但是,这也将删除相关联LVL1,而不仅仅是那些空的所有记录。
任何帮助将不胜感激。
由于
罗比Averill的谁与我的帖子评论下面解决了这个问题:
$categories['lvl1'] = array_filter($categories['lvl1']);
array_filter()
采用了回调作为第二个参数。如果您不提供它,它将仅返回不等于布尔值false
的记录。您可以提供一个简单的回调来删除空值。
array_filter()
也使用数组的副本(而不是引用),因此您需要使用返回值。
例如:
$categories = [
"lvl0" => [
"Cleaning",
"Bread"
],
"lvl1" => [
null,
"Bread > rolls"
]
];
$lvl1 = array_filter($categories['lvl1'], function($value) {
return !empty($value);
});
var_dump($lvl1);
,将返回:
array(1) {
[1] =>
string(13) "Bread > rolls"
}
在回调中使用'return!empty($ value);'实际上具有与不使用回调相同的效果。 –
从技术上讲,当然。但它也没有什么启发意义,因为它没有告诉他如何改变回调。 –
我有我的最后一个工作day.Generally关联数组相同的问题array_filter()
需要数组键过滤掉null
,false
等值。但是这个小函数帮助我在不知道关联数组键的情况下过滤出NULL
值。希望这也将帮助你,https://eval.in/881229
代码:
function array_filter_recursive($input)
{
foreach ($input as &$value)
{
if (is_array($value))
{
$value = array_filter_recursive($value);
}
}
return array_filter($input);
}
$categories = [
"lvl0" => [
"Cleaning",
"Bread"
],
"lvl1" => [
null,
"Bread > rolls"
]
];
$result = array_filter_recursive($categories);
print '<pre>';
print_r($result);
print '</pre>';
输出:
(
[lvl0] => Array
(
[0] => Cleaning
[1] => Bread
)
[lvl1] => Array
(
[1] => Bread > rolls
)
)
'array_combine(array_keys($类别),array_map( 'array_filter',$类别))'' – apokryfos
$类别[ 'LVL1'] = array_filter($类别[ 'LVL1'])'? –
你可以添加更多的代码来显示你使用'array_filter($ categories ['lvl1'])''的上下文吗? _不应删除任何非空值。_ –