我有以下陣列
Array
(
[22] => Array
(
[0] => 1074
[1] => 1926
)
[1772] => Array
(
[0] => 1080
[1] => 1921
)
[1926] => Array
(
[0] => 1772
)
[1080] => Array
(
[0] => 1833
)
)
我想要與鍵 1926 相關的所有資料。在上面的 1926 中具有值 1772 然后在這個鍵中有 2 個值 1080 和 1921 我必須檢查兩個鍵等等。
我想要的結果:陣列(
[0]=>1772
[1]=>1080
[2]=>1921
[3]=>1833
.....
)
我嘗試了很多解決方案,但沒有得到想要的回應,我創建了下面的代碼,只回傳一個值 1772
function arrayTraverse($targetKey, $array, $returndata=[])
{
foreach($array as $key=>$values){
if($targetKey == $key){
unset($array[$targetKey]);
if(is_array($values))
{
foreach($values as $val){
$returndata = array_merge($returndata, array($val));
arrayTraverse($val, $array, $returndata);
}
}
}
}
return $returndata;
}
最后我只得到 [0]=>1772
uj5u.com熱心網友回復:
foreach array
foreach subArray
if isset(array[value])
subArray[key] &= array[value]
uj5u.com熱心網友回復:
我解決了上面我的問題,下面是獲取確切資料的代碼
function arrayTraverse($reportingusersArr, $targetkey, $resultarr=[], $checkvalues=[]){
$uservalues = $reportingusersArr[$targetkey];
if($uservalues){
unset($reportingusersArr[$targetkey]);
$resultarr[$targetkey] = $uservalues;
$lastResultvalue = $uservalues;
foreach($uservalues as $keya=>$uva){
$checkvalues[] = $uva;
}
foreach($uservalues as $key=>$uv){
$elementkey = array_search($targetkey, $checkvalues);
unset($checkvalues[$elementkey]);
return arrayTraverse($reportingusersArr, $uv, $resultarr, $checkvalues);
}
}
else{
$othercheckval = $checkvalues;
foreach($checkvalues as $key3=>$uv2){
$elementkey = array_search($uv2, $othercheckval);
unset($othercheckval[$elementkey]);
return arrayTraverse($reportingusersArr, $uv2, $resultarr, $othercheckval);
}
}
$finalarray = [];
foreach($resultarr as $fkey=>$fvaluearr){
foreach($fvaluearr as $fval)
{
$finalarray[] = $fval;
}
}
return $finalarray;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/361455.html
上一篇:從函式范圍內訪問php變數
