如何获取与php数组中的键和值相关的所有数组值
Posted
技术标签:
【中文标题】如何获取与php数组中的键和值相关的所有数组值【英文标题】:how to get all the array values related to key and values in php array 【发布时间】:2021-12-25 12:28:05 【问题描述】:我有以下数组
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
【问题讨论】:
我想不是问题。它只是告诉我们您希望我们为您完成繁重的工作。你被困在哪里了?你研究了什么?你试过什么?需要明确的是,我们会在 *** 上为您提供帮助,但我们不是免费的“我的想法”服务,请参阅 how to ask 和 Minimal, Complete and Verifiable Example 我尝试了很多解决方案,但没有得到想要的响应函数 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); 返回 $returndata; 【参考方案1】:foreach array
foreach subArray
if isset(array[value])
subArray[key] &= array[value]
【讨论】:
虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高答案的长期价值。【参考方案2】:我解决了上述我的问题,下面是获取确切数据的代码
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;
【讨论】:
以上是关于如何获取与php数组中的键和值相关的所有数组值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中的键和值列表上使用 Lambda 函数获取最大值和最小值?