下面就直接放出代码,针对使用递归删除数组中的值,存在空数组时,可以过滤空数组,具体实现可以参考以前写的文章,这篇主要介绍’&'处理数组
<?php
$arrTest = array(
'A' => [
'An' => 'anan',
'Bn' => 'bnbn',
],
'C' => [
'Cn' => 'cncn',
'Dn' => 'dndn',
],
);
/**
* 修改数组中的值
* @param $arrToChange array 需要处理的数组
* @return array 返回处理后的数组
*/
function toChangeValue($arrToChange)
{
//使用'&'引用每次遍历过后的值,这样修改的就是原数组的值
foreach ($arrToChange as &$value) {
foreach ($value as &$each) {
if ($each == 'anan') {
$each = 'enen';
}
}
}
return $arrToChange;
}
/**
* 通过递归和'&'删除数组中不符合要求的值
* @param $arrToDelete array 需要处理的数组
* @return array 返回处理后的数组
*/
function toDeleteValue(&$arrToDelete)
{
foreach ($arrToDelete as $key => $value) {
if (is_array($value)) {
//将递归过后的数组地址传值给原数组, 这样才能删除掉原数组中的值,而不是删除复制数组中的值
$arrToDelete[$key] = toDeleteValue($value);
} elseif ($value == 'anan') {
unset($arrToDelete[$key]);
}
}
return $arrToDelete;
}