我有一个简单的多维数组,如下所示: `
$array= [
'A' => [
'B' => ['D', 'E', 'F'],
'C' => 'G',
],
];
我需要与他们的父母一起返回所有节点值。所以我需要这样的输出:
P[A] = 0;
P[B] = A;
P[D] = B;
P[E] = B;
P[F] = B;
P[C] = A;
P[G] = C;
我尝试了一些功能,例如array_search()
,array_walk_recursive
等,但是无法将这些功能应用于我的情况。
非常感谢您的帮助!
答案 0 :(得分:2)
<!doctype html>
<html>
<head>
<script type="application/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="application/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
</head>
<body>
<table id="example"></table>
</body>
</html>
答案 1 :(得分:0)
您可以使用递归函数来实现此目的,该函数具有“ parent”作为可选的第二个参数。
$array = [
'A' => [
'B' => [ 'D', 'E', 'F' ],
'C' => 'G',
],
];
function showParents($arr, $parent = 0) {
foreach($arr as $key => $val) {
if(is_array($val)) {
// for when the element is an array
echo '[' . $key . '] ' . $parent . '<br>';
} else if(is_int($key)){
// for when the array is an not-associative one (or are you using INTs as keys also?)
echo '[' . $val . '] ' . $parent . '<br>';
} else if(is_string($val)){
// for when the value is a string ('C' => 'G')
echo '[' . $key . '] ' . $parent . '<br>';// display parent of C
echo '[' . $val . '] ' . $key . '<br>';// display parent of G
}
if(is_array($val)) {
// when the current value is an array, go deeper
showParents($val, $key);
}
}
}
showParents($array);
显示:
[A] 0
[B] A
[D] B
[E] B
[F] B
[C] A
[G] C