【问题标题】:How to Get title by id in 2D array?如何通过二维数组中的 id 获取标题?
【发布时间】:2017-07-19 09:54:09
【问题描述】:

我有一个数组,

array
(
    [0] => array
    (
        [id]       => 2
        [title]    => Test
        [alt_text] => 'This is test',

    )

    [1] => array
    (
        [id]       => 3
        [title]    => Test1
        [alt_text] => 'This is test1',

    )

    [2] => array
    (
        [id]       => 7
        [title]    => Test2
        [alt_text] => "This is test2",

    ),

)

我想要动态 id 的标题值。

例如如果我通过了 2,那么它应该将 title 的值返回为 Test

我可以用 foreach 循环做到这一点,没问题。但是是否有任何核心功能可以实现这一点或核心功能的组合或单线sn-p?

【问题讨论】:

  • 没有内置方法可以做到这一点,但 foreach 循环应该非常简单,您可以自己将其包装在一个函数中。
  • 您的意思是要加快获取速度?
  • 您不能使用以ids 为键的关联数组吗?这样,查找就像$array[$id]['title'] 一样简单。你的ids 是独一无二的吗?
  • 此外,如果您担心性能问题,请在找到标题后添加break 声明。
  • 您可以查看一些函数,例如 array_filter 或 array_reduce,它们采用自定义回调函数 - 可以使用这些函数来实现。但是它们当然也会在内部循环数据……所以您不妨编写易于理解的代码,自己看一下,使用“正常”循环。

标签: php arrays multidimensional-array


【解决方案1】:

我遇到了一个功能,考虑到 id 将是唯一的

$temp = array_column($arr,'title','id');
echo $temp[2]; // will result Test

工作demo

【讨论】:

    【解决方案2】:

    这是我最终使用的解决方案:

    echo $arr[array_search(7, array_column($arr, 'id'))]['title'];
    

    【讨论】:

    • 您还没有回答我关于您的 id 是否唯一的问题。如果是这样,您可以简化整个查找(请参阅我的答案)。
    • 它只是考虑一组独特的类别,我也没有提到这一点。因此,如果您考虑过我发布的输入数组的情况。你可能会得到我的关注
    【解决方案3】:

    使用循环可以做到这一点:

    function getTitle($arr,$key){//$arr is your array
        foreach($arr as $keys=>$values){
            if($values['id'] == $key){
                return $values['title'];
            }
        }
        return null;
    }
    
    echo getTitle($arr,2);
    

    【讨论】:

    • @rahul_m 在这种情况下,您应该看到:stackoverflow.com/questions/1019076/…。而且我认为没有任何直接的功能可以完成这项工作。
    • 或者像@domdom 那样构建你的数据回答这将变得非常容易。
    【解决方案4】:

    假设您的 ids 是唯一的(!),您可以简单地使用关联数组:

    $yourArrray = array(
        2 => array('title' => 'Test', 'alt_text' => 'This is test'),
        3 => array('title' => 'Test1', 'alt_text' => 'This is test1'),
        7 => array('title' => 'Test2', 'alt_text' => 'This is test2')
    );
    

    这样,您的查找就很简单了:

    $yourArray[$id]['title']
    

    例如:

    $title = $yourArray[2]['title'] // $title Now contains "Test"
    

    【讨论】:

      【解决方案5】:

      希望这个功能会有所帮助

      public function getTitle($array, $id) {
          foreach ($array as $value) {
             if($value['id'] == $id) {
                 return $value['title'];
              }
           }
         return null;
      }
      

      【讨论】:

        【解决方案6】:

        这个功能会有所帮助。

        public function getValue($array, $id)
        {
            foreach ($array as $value) {
                if($value['id'] == $id) {
        
                  return $value['title'];
                }
            }
        
            return null;
        }
        

        【讨论】:

          猜你喜欢
          • 2021-02-27
          • 2016-05-09
          • 1970-01-01
          • 1970-01-01
          • 2018-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-12
          相关资源
          最近更新 更多