Rhy*_*Guy 5 php arrays multidimensional-array
当前数组:
Array (
[name] => Array (
[name1] => Array (
[0] => some value1
)
[name2] => Array (
[0] => some value2
)
[name3] => Array (
[0] =>
)
)
Run Code Online (Sandbox Code Playgroud)
通缉阵列:
Array (
[name] => Array (
[name1] => Array (
[0] => some value1
)
[name2] => Array (
[0] => some value2
)
)
Run Code Online (Sandbox Code Playgroud)
由于name3[0]不包含任何值,因此需要将其删除.从我读到的,我应该使用array_filter它,但我不能让它工作.
您需要提供array_filter一个谓词(函数)来确定[0]每个数组元素的子元素是否为空.所以:
$array = array_filter($array, function($item) { return !empty($item[0]); });
Run Code Online (Sandbox Code Playgroud)
要知道,empty不是很挑剔:它会导致删除其任何项目[0]的子元素是空字符串false,null,0或"0"-它也将删除没有的项目[0]子元素都没有.如果您需要更符合手术目标的测试,则需要对测试进行微调.
递归函数,它将从输入数组中删除所有空值和空数组:
//clean all empty values from array
function cleanArray($array)
{
if (is_array($array))
{
foreach ($array as $key => $sub_array)
{
$result = cleanArray($sub_array);
if ($result === false)
{
unset($array[$key]);
}
else
{
$array[$key] = $result;
}
}
}
if (empty($array))
{
return false;
}
return $array;
}
Run Code Online (Sandbox Code Playgroud)
我已经在这个例子中测试过它,无论数组有多深它都可以工作:
$array = array(
'name' => array(
'name1' => array(0 => 1),
'name2' => array(0 => 3, 1 => array(5 => 0, 1 => 5)),
'name3' => array(0 => '')
)
);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
6167 次 |
| 最近记录: |