如何获取与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数组中的键和值相关的所有数组值的主要内容,如果未能解决你的问题,请参考以下文章

PHP获取数组最后一个元素的键和值

如何从数组中的对象添加新的键和值?

如何在 C# 中的键和值列表上使用 Lambda 函数获取最大值和最小值?

如何将对象数组操作为不同的键和值? [复制]

如何将所有键和值从 Swift 中的 NSDictionary 获取到单独的字符串数组中?

如何在javascript中获取redis中的所有键和值?