从 php 中的关联数组键中删除特定记录
Remove specific records from associative array key in php
您好,我有一个包含两个具有以下结构的数组的数组:
categories [
"lvl0" => array:2 [
0 => "Cleaning"
1 => "Bread"
]
"lvl1" => array:2 [
0 => null
1 => "Bread > rolls"
]
]
我想从 'lvl1' 数组中删除任何 NULL 记录,但未能找到执行此操作的正确方法。
我试过:
array_filter($categories['lvl1'])
但是这也会删除与 lvl1 关联的所有记录,而不仅仅是 NULL 记录。
如有任何帮助,我们将不胜感激。
谢谢
array_filter()
将回调作为第二个参数。如果您不提供它,它 return 只会记录不等于布尔值 false
的记录。您可以提供一个简单的回调来删除空值。
array_filter()
还使用数组的副本(而不是引用),因此您需要使用 return 值。
例如:
$categories = [
"lvl0" => [
"Cleaning",
"Bread"
],
"lvl1" => [
null,
"Bread > rolls"
]
];
$lvl1 = array_filter($categories['lvl1'], function($value) {
return !empty($value);
});
var_dump($lvl1);
那会 return:
array(1) {
[1] =>
string(13) "Bread > rolls"
}
我在上次工作时遇到了同样的问题 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
)
)
Robbie Averill 对我的 post 发表了以下评论,解决了这个问题:
$categories['lvl1'] = array_filter($categories['lvl1']);
您好,我有一个包含两个具有以下结构的数组的数组:
categories [
"lvl0" => array:2 [
0 => "Cleaning"
1 => "Bread"
]
"lvl1" => array:2 [
0 => null
1 => "Bread > rolls"
]
]
我想从 'lvl1' 数组中删除任何 NULL 记录,但未能找到执行此操作的正确方法。
我试过:
array_filter($categories['lvl1'])
但是这也会删除与 lvl1 关联的所有记录,而不仅仅是 NULL 记录。
如有任何帮助,我们将不胜感激。
谢谢
array_filter()
将回调作为第二个参数。如果您不提供它,它 return 只会记录不等于布尔值 false
的记录。您可以提供一个简单的回调来删除空值。
array_filter()
还使用数组的副本(而不是引用),因此您需要使用 return 值。
例如:
$categories = [
"lvl0" => [
"Cleaning",
"Bread"
],
"lvl1" => [
null,
"Bread > rolls"
]
];
$lvl1 = array_filter($categories['lvl1'], function($value) {
return !empty($value);
});
var_dump($lvl1);
那会 return:
array(1) {
[1] =>
string(13) "Bread > rolls"
}
我在上次工作时遇到了同样的问题 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
)
)
Robbie Averill 对我的 post 发表了以下评论,解决了这个问题:
$categories['lvl1'] = array_filter($categories['lvl1']);