如何解决PHP递归函数返回空数组
我有一个巨大的数组,其中的键在大多数情况下也不是恒定的,但是有 3 个键始终保持不变 (#name,#default_value,#value) 和 #default_value 和 #value 是不同的我想要在 1 个简单数组中获取这些类型的子数组,为此我在整个数组中使用递归并检查是否存在这 3 个键,我可以轻松地在递归中打印这些值,但我无法获得这些值作为回报.以便我可以进一步处理它们。
$form=array();
$form['field_one']['#name']="field_one";
$form['field_one']['#default_value']="old";
$form['field_one']['#value']="new";
$form['field_two']['#name']="field_two";
$form['field_two']['#default_value']="old";
$form['field_two']['#value']="new";
$form['field_three']['#name']="field_three";
$form['field_three']['#default_value']="old";
$form['field_three']['#value']="old";
$form['thisCouldbeanotherarray']['idk']['field_four']['#name']="field_four";
$form['thisCouldbeanotherarray']['idk']['field_four']['#default_value']="old";
$form['thisCouldbeanotherarray']['idk']['field_four']['#value']="new";
$arr_get = get_updatedvalues($form,array());
var_dump($arr_get);
function get_updatedvalues($form,$fields) {
if (!is_array($form)) {
return;
}
foreach($form as $k => $value) {
if(str_replace('#','',$k) =='default_value' && ($form['#default_value'] != $form['#value'] ) ){
$fields['field'][$form['#name']] = array("name" => $form['#name'],"old_value" =>$form['#default_value'],"new_value" =>$form['#value']);
var_dump($fields);
}
get_updatedvalues($value,$fields);
}
return $fields;
}
如果您运行此代码,它将为您提供 $arr_get > array (size=0),我需要所有三个值
解决方法
如果我理解正确,您需要传递 fields
作为参考才能更改它:
function get_updatedvalues($form,&$fields) {
但是,要做到这一点,您需要更改初始调用,以便将变量作为引用传递:
$array = [];
$arr_get = get_updatedvalues($form,$array);
运行这个我得到:
Array
(
[field] => Array
(
[field_one] => Array
(
[name] => field_one
[old_value] => old
[new_value] => new
)
[field_two] => Array
(
[name] => field_two
[old_value] => old
[new_value] => new
)
[field_four] => Array
(
[name] => field_four
[old_value] => old
[new_value] => new
)
)
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。