【发布时间】:2021-08-14 18:50:07
【问题描述】:
我有一个巨大的数组,其中的键在大多数情况下也不是恒定的,但是有 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),我需要所有三个值
【问题讨论】:
-
你不认为你应该在调用之前定义函数吗?还有,你为什么要在内部调用函数?
-
它是一个递归函数。检查整个数组的元素,并检查其中是否存在某些值。这就是为什么我需要递归循环
-
$form 数组是示例,它不是实际数组,该数组太大,包含 2000 个元素
-
@AdisonMasih
don't you think you should define the function before calling it...PHP 中不需要