我正在尋找一個函式來針對特定條件回傳陣列及其所有子結構
標準:
- php 5.6 兼容
- 回傳具有鍵名稱的陣列的最后一個實體,
!ENTITY其所有值都完好無損
樣本陣列:
對于多維陣列,我們稱之為$arr,對于這個示例結構,它有 6 層深,我們不應該假設它總是 6 層。
$arr = array("!ENTITY" =>
array("!ENTITY" =>
array("!ENTITY" =>
array("!ENTITY" =>
array("!ENTITY" =>
array("!ENTITY" =>
array("svg" =>
array(
0 => array("g" => "", "@id" => "Layer_2"),
1 => array("g" => "", "@id" => "Layer_3"),
),
"@version" => 1.2,
"@id" => "Layer_1",
),
"@different" => "layer"
),
"@all" => "layer"
),
"@here" => "layer"
),
"@goes" => "layer"
),
"@else" => "layer"
),
"@something" => "layer"
);
預期輸出:
我想回傳最終的陣列!ENTITY,它的子結構完好無損。以下是預期輸出的示例:
Array
(
[svg] => Array
(
[0] => Array
(
[g] =>
[@id] => Layer_2
)
[1] => Array
(
[g]
[@id] => Layer_3
)
)
[@version] => 1.2
[@id] => Layer_1
)
uj5u.com熱心網友回復:
如果找到如下結果,您將需要遞回遍歷陣列并回傳結果值:
<?php
function getLastValueForKey($data, $key){
$res = '';
foreach($data as $k => $value){
$sub_res = is_array($value) ? getLastValueForKey($value, $key) : '';
if($sub_res !== ''){
$res = $sub_res;
}else if($k === $key){
$res = $value;
}
}
return $res;
}
print_r(getLastValueForKey($arr, '!ENTITY'));
在線演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/339112.html
下一篇:如何在Go語言中對陣列進行排序?
