像这样的事情有更短的解决方案吗?
$manufacturer = array();
if(!is_null($params->get('name'))){
$manufacturer['name'] = $params->get('name');
}
if(!is_null($params->get('link'))){
$manufacturer['link'] = $params->get('link');
}
if(!is_null($params->get('description'))){
$manufacturer['description'] = $params->get('description');
}
...
因此,如果值不为空,则只应使用该值设置数组的键。这有点短,但使用此解决方案,键将存在值为 NULL。但是当值为 NULL 时,它们甚至不应该存在:
$manufacturer = array(
'name' => !is_null($params->get('name')) ? $params->get('name') : null,
'link' => !is_null($params->get('link')) ? $params->get('link') : null,
'description' => !is_null($params->get('description')) ? $params->get('description') : null
);
编辑:
它应该适用于多维数组,并且数组键和参数键可能会有所不同
对于@u_mulderforeach
和@Nonoarray_filter
解决方案,它们仅适用于简单数组,它们不会从多维数组中删除空值,
试试这个递归函数:
<?php
/**
just keep your array like this:
$manufacturer = array(
'name' => $params->get('name'),
'link' => $params->get('link'),
'description' => $params->get('description'),
'attribute' => array (
'street' => $params->get('street'),
...
)
...
);
**/
$manufacturer = [
'name' => 'yoeunes',
'link' => null,
'description' => 'fake description',
'attribute' => [
'street' => null,
'city' => 'Marrakech',
],
];
function array_remove_null($array)
{
foreach ($array as $key => $value) {
if (is_array($value)) {
$array[$key] = array_remove_null($array[$key]);
}
if (is_null($array[$key])) {
unset($array[$key]);
}
}
return $array;
}
echo "<pre>";
print_r(array_remove_null($manufacturer));
输出:
Array
(
[name] => yoeunes
[description] => fake description
[attribute] => Array
(
[city] => Marrakech
)
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句