【问题标题】:How can I find associated array key/value in array of arrays? [duplicate]如何在数组数组中找到关联的数组键/值? [复制]
【发布时间】:2021-02-19 02:48:51
【问题描述】:

我正在尝试从数组数组中获取一个值:

$headers = {array} [10]
 0 = {array} [2]
 1 = {array} [2]
 2 = {array} [2]
 3 = {array} [2]
 4 = {array} [2]
 5 = {array} [2]
 6 = {array} [2]
 7 = {array} [2]
 8 = {array} [2]
  name = "X"
  value = "something"
 9 = {array} [2]

所以我想找到名称为 X 的值?

我尝试了array_search(),也许我需要展平数组?

干杯,

米克

【问题讨论】:

  • 这是什么$headers = {array} [10] 是什么意思?
  • 不是,我一直在寻找“Lavavel 方式”。还是谢谢。

标签: php laravel


【解决方案1】:

您可以将数组转换为 laravel collection 并应用 where() 函数

下面是这个解决方案

$headers  = [
    [
        "name" => "n",
        "value" => "somthing",
    ],
    [
        "name" => "x",
        "value" => "somthing",
    ],
    [
        "name" => "n",
        "value" => "somthing",
    ],
    [
        "name" => "n",
        "value" => "somthing",
    ],
    [
        "name" => "n",
        "value" => "somthing",
    ],
];

$collcetion = collect($headers);
$result = $collcetion->where("name", "x")->first();
dd($result);

参考链接

https://laravel.com/docs/8.x/collections#method-collect https://laravel.com/docs/8.x/collections#method-where

【讨论】:

    【解决方案2】:

    如果你的名字有唯一值,那么你可以使用 array_column,在键之间建立映射,然后取出你想要的项目。

    请注意,如果您有多个具有相同值的名称,则后者将覆盖之前的任何分配。

    <?php
    $items =
    [
        [
            'name'     => 'Johnny',
            'vocation' => 'Ratter'
        ],
        [
            'name'     => 'Donald',
            'vocation' => 'Draper'
        ],
        [
            'name'     => 'Eddie',
            'vocation' => 'Trucker'
        ]
    ];
    
    echo array_column($items, 'vocation', 'name')['Eddie'] ?? null;
    

    输出:

    Trucker
    

    【讨论】:

      【解决方案3】:

      你有两种方法

      1. 使用原生 PHP
      foreach ($headers as $header) {
         if ($header['name'] == 'x') {
             // TODO ...
             break;
         }
      }
      
      1. 使用 Laravel 集合
      $result = collect($headers)->filter(function ($header) {
         if ($header['name'] == 'x') {
             return $header;
         }
      })->values();
      

      【讨论】:

        【解决方案4】:

        这是一个按键搜索的代码,如果你想要按键和值,检查重复答案How to search by key=>value in a multidimensional array in PHP

        function search($array, $key)
        {
            $results = array();
            search_r($array, $key, $results);
            return $results;
        }
        
        function search_r($array, $key, &$results)
        {
            if (!is_array($array)) {
                return;
            }
        
            if (isset($array[$key])) {
                $results[] = $array;
            }
        
            foreach ($array as $subarray) {
                search_r($subarray, $key, $results);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2018-05-16
          • 2014-11-12
          • 1970-01-01
          • 1970-01-01
          • 2023-03-06
          • 1970-01-01
          • 2015-07-23
          • 2015-09-24
          • 2019-05-12
          相关资源
          最近更新 更多