我有一個多維陣列,我想構建一個只提供孩子 id 的 url。
array (
0 =>
array (
'id' => '1',
'p_pag' => '0',
'link' => 'Contact',
'children' =>
array (
0 =>
array (
'id' => '2',
'p_pag' => '1',
'link' => 'Contact-County',
'children' =>
array (
0 =>
array (
'id' => '3',
'p_pag' => '2',
'link' => 'Contact-Town-1',
'children' =>
array (
),
),
),
),
),
),
)
我希望有一個函式可以指定上面的陣列和idas3以獲得這樣的鏈接/Contact/Contact-County/Contact-Town-1/
我的嘗試:
function getlink($array,$id)
{
$link='';
foreach($array as $aindex => $aval)
{
if($aval['id']==$id){$link.='/'.$aval['link'];}
elseif($aval['children']){...}
}
}
uj5u.com熱心網友回復:
使用遞回方法遍歷所有子子陣列以搜索目標 id。找到 id 后,在回傳分支時開始構建字串,直到到達頂層。當沒有要回傳的父母時,將從函式中回傳構建的字串。
代碼:(演示)
function getLinkPathById(array $array, string $toId): ?string
{
foreach ($array as $row) {
if (
($deeper = getLinkPathById($row['children'], $toId))
|| $row['id'] === $toId
) {
return "/{$row['link']}$deeper";
}
}
return null;
}
echo "1: " . getLinkPathById($array, 1) . PHP_EOL;
echo "2: " . getLinkPathById($array, 2) . PHP_EOL;
echo "3: " . getLinkPathById($array, 3) . PHP_EOL;
echo "4: " . getLinkPathById($array, 4);
4 種不同測驗的輸出:
1: /Contact
2: /Contact/Contact-County
3: /Contact/Contact-County/Contact-Town-1
4:
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/520625.html
上一篇:打破python中的遞回回圈
下一篇:對字串的偶數值求和
