php – 以相反的顺序从单向数组中获取数据
发布时间:2020-12-13 13:47:07 所属栏目:PHP教程 来源:网络整理
导读:我有一个像单向列表的数组: array( 'data1' = some data,'next' = array( 'data2' = some data,'next' = array( 'data3' = some data,'next' = array( 'data4' = some data,'next' = array( 'data5' = some data,'next' = ..... etc to data n ); ); ); );)
我有一个像单向列表的数组:
array( 'data1' => <some data>,'next' => array( 'data2' => <some data>,'next' => array( 'data3' => <some data>,'next' => array( 'data4' => <some data>,'next' => array( 'data5' => <some data>,'next' => ..... etc to data n ); ); ); ); ); 我需要以相反的顺序从数组内部获取数据. (数据n,…,数据2,数据1)你知道任何好方法吗?
你不是在寻找阵列的反面,但是你正在寻找相反的东西.
首先要更好地理解这种逆转可能会对你有所帮助. 您需要每个元素的父元素.如果您遍历下一个,则父级始终是前一个.因此,如果您将前一个元素添加为父元素,那么数组的最后一个元素就是您要查找的元素. 所以听起来很直接.更难的部分是用所谓的变量别名/引用来表达它. 让我们添加所有父项,并在遍历数组时,在引用它之后删除“下一个”条目: /* traverse the path on 'next' and keep previous to set 'parent' of current */ $walk = &$array; // start at root node while ($walk) { if (isset($previous)) { $walk['parent'] = &$previous; } $previous = &$walk; $hasNext = array_key_exists('next',$walk); if ($hasNext) { $walk = &$walk['next']; unset($previous['next']); } else { break; } } unset($previous); 写入最后一个元素然后将包含您正在寻找的数组.最后一个元素是$步行: print_r($walk); 哪个给你(Demo): Array ( [data5] => <some data5> [parent] => Array ( [data4] => <some data4> [parent] => Array ( [data3] => <some data3> [parent] => Array ( [data2] => <some data2> [parent] => Array ( [data1] => <some data1> ) ... ) 希望这是有帮助的,可以理解的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |