我有问题,删除空数组。我的数组看起来像:
Array
(
[Women] => Array
(
[S] => Array
(
[warehouse] => 22
[price] => 21212
)
[M] => Array
(
[warehouse] =>
[price] =>
)
[L] => Array
(
[warehouse] =>
[price] =>
)
[XL] => Array
(
[warehouse] =>
[price] =>
)
[XXL] => Array
(
[warehouse] =>
[price] =>
)
)
[Men] => Array
(
[S] => Array
(
[warehouse] => 22
[price] =>
)
[M] => Array
(
[warehouse] =>
[price] =>
)
[L] => Array
(
[warehouse] =>
[price] =>
)
[XL] => Array
(
[warehouse] =>
[price] =>
)
[XXL] => Array
(
[warehouse] =>
[price] =>
)
)
)
最后一个子总是有两个键(仓库和价格)
我代码:$value = $this->$attribute;
$check = function($haystack) use(&$check)
{
foreach ($haystack as $key => $value) {
if (is_array($value)) {
$haystack[$key] = $check($haystack[$key]);
}
if (empty($haystack[$key])) {
unset($haystack[$key]);
}
}
return $haystack;
};
var_dump( $check($value) );
结果:Array
(
[Women] => Array
(
[S] => Array
(
[warehouse] => 22
[price] => 21212
)
)
[Men] => Array
(
[S] => Array
(
[warehouse] => 22
)
)
)
它的工作,但我的问题是,"男人数组"应该被删除,因为最后一级只有仓库键(正确的两个键)。如何改变我的功能得到我想要的结果?
如果$array包含这个
'
Array
(
[Women] => Array
(
[S] => Array
(
[warehouse] => 22
[price] => 21212
)
[M] => Array
(
[warehouse] =>
[price] =>
)
[L] => Array
(
[warehouse] =>
[price] =>
)
[XL] => Array
(
[warehouse] =>
[price] =>
)
[XXL] => Array
(
[warehouse] =>
[price] =>
)
)
[Men] => Array
(
[S] => Array
(
[warehouse] => 22
[price] =>
)
[M] => Array
(
[warehouse] =>
[price] =>
)
[L] => Array
(
[warehouse] =>
[price] =>
)
[XL] => Array
(
[warehouse] =>
[price] =>
)
[XXL] => Array
(
[warehouse] =>
[price] =>
)
)
)
然后迭代每个数组键women, men在每个键中我们将迭代到s,m,l,xl如果任何一个元素缺失我们将取消设置,最后迭代我们将检查女性和男性的大小,如果其中一个没有大小我们将取消设置性别键
foreach($array as $gender => $array_val){
foreach($gender as $size=>$size_val){
if(empty($size_val)){
unset($array[$gender][$size]);
}
}
if(count($array[$gender])==0) unset($array[$gender]);
}
var_dump($array);