此函数应遍历多维数组并返回数组element_rule_id
值的集合。 Hovewer它没有返回任何东西。
您可以在此处检查数组的var_dump:http://pastebin.com/T5nwGmna
function deepIns($array = array(), $collect = array(), $str = '') {
$count = count($array);
foreach($array as $i => $val) {
if(is_array($val)) {
if(array_key_exists('element_rule_id' ,$val)) {
$collect[$val['element_rule_id']] = 1;
}
if(($count - 1) == $i) {
if(array_key_exists('0', $val['condition'])) {
deepIns($val['condition'], $collect);
}
else {
return $collect;
}
}
}
}
}
预期结果将是:
array (size=5)
'rule_demo_rules1_1' => int 1
'rule_demo_rules1_2' => int 1
'rule_demo_rules1_3' => int 1
'rule_demo_rules1_5' => int 1
'rule_demo_rules1_6' => int 1
答案 0 :(得分:0)
在设计递归函数时,返回是一种暧昧的方式,简单的解决方法是将函数放在静态类中,并将返回结果添加到该类中:
class xx {
public static $result;
function deepIns($array = array(), $collect = array(), $str = '') {
$count = count($array);
foreach($array as $i => $val) {
if(is_array($val)) {
if(array_key_exists('element_rule_id' ,$val)) {
$collect[$val['element_rule_id']] = 1;
}
if(($count - 1) == $i) {
if(array_key_exists('0', $val['condition'])) {
deepIns($val['condition'], $collect);
}
else {
self::$result[] = $collect;
}
}
}
}
}
答案 1 :(得分:0)
所有需要的是deepIns($val['condition'], $collect);
之前的$ collection
$collection = deepIns($val['condition'], $collect);