【问题标题】:PHP, combine two arrays into a new array, using the first array's values as the keysPHP,将两个数组组合成一个新数组,使用第一个数组的值作为键
【发布时间】:2011-06-08 20:08:52
【问题描述】:

我有两个要合并的数组。我需要从第一个数组中获取值,将这些值用作匹配第二个数组的键,并将它们组合成第三个数组(我将使用的那个)。

换句话说,我有这个第一个数组:

Array
(
[24] => 5
[26] => 4
[27] => 2
)

我拥有的第二个数组:

Array
(
[1] => McDonalds
[2] => Burger King
[3] => Wendys
[4] => Taco Bell
[5] => Hardees
)

最后,这是我想要的数组:

Array
(
[5] => Hardees
[4] => Taco Bell
[2] => Burger King
)

似乎很容易,但我似乎无法弄清楚。我尝试了各种数组函数,例如array_intersect_key,但没有成功。

【问题讨论】:

    标签: php arrays list key


    【解决方案1】:

    这是一个简单的imperative 解决方案:

    $combined = array();
    
    foreach ($array1 as $v) {
        if (isset($array2[$v])) {
            $combined[$v] = $array2[$v];
        }
    }
    

    还有一个functional 解决方案:

    // Note that elements of $combined will retain the order of $array2, not $array1
    $combined = array_intersect_key($array2, array_flip($array1));
    

    【讨论】:

    • +1,他的问题标题让我对 array_combine 感到困惑。好电话。
    • @jasonbar:我也有一段时间了。
    • 特别感谢您提供两种类型的解决方案。这很有趣。
    【解决方案2】:
    $result = array();
    foreach (array_flip($keys) as $k) {
        $result[$k] = $values[$k];
    }
    

    【讨论】:

      【解决方案3】:

      只有一行:

      foreach ($a as $v) $c[$v]=$b[$v];
      

      见:

      $a=array(24=>5,26=>4,27=>2);
      $b=array(1=>'McDonalds',2=>'Burger King',3=>'Wendys',4=>'Taco Bell',5=>'Hardees');
      
      foreach ($a as $v) $c[$v]=$b[$v];
      
      print_r($c);
      

      返回:

      Array
      (
          [5] => Hardees
          [4] => Taco Bell
          [2] => Burger King
      )
      

      【讨论】:

        【解决方案4】:

        array_keys 做你想做的事情

        第一个参数是你的快餐店的数组,第二个参数是你给的第一个数组(你想要的键)

        例如:

        $array = array_keys(array(0 => 'McDonalds', 1 => 'BurgerKing', 2 => 'Taco Bell'),
          array(0 => 1));
        $array will only have BurgerKing in it
        

        【讨论】:

        • $array = array_keys($theKeys, $fastFood); // 这返回了一个空白数组。这种格式不正确吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 2015-03-14
        • 1970-01-01
        • 2021-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多