代码之家  ›  专栏  ›  技术社区  ›  kales

PHP:数组中作为键的值之一

  •  2
  • kales  · 技术社区  · 6 年前

    我有这样一个数组:

    $arrayIn = [
         [ 0 => "3",
           1 => "12345"
         ],
         [ 0 => "2",
           1 => "123"
         ]
    ];
    

    并希望得到如下数组:

    $arrayOut = [
         12345 => "3",
         123 => "2"   
    ];
    

    我试过了 array_values array_combine 但无法获得此结果。我该怎么做?

    2 回复  |  直到 6 年前
        1
  •  5
  •   Don't Panic    6 年前

    您可以使用 array_column 为了这个

    $arrayOut = array_column($arrayIn, 0, 1);
    

    第二个参数指定要选择的列,第三个参数指定要用作键的列。

    请记住,如果第1列中有重复的值,它们将在结果中被覆盖,因为数组键在定义上必须是唯一的,但该警告适用于此问题的任何解决方案。

        2
  •  1
  •   ishegg    6 年前

    您只需在原始数组中循环,然后构建一个新数组,其中第二个值作为键,第一个值作为值:

    $arrayOut = [];
    foreach ($arrayIn as $arr) {
        $arrayOut[$arr[1]] = $arr[0];
    }
    var_dump($arrayOut);
    

    Demo

    后果

    阵列(大小=2)
    12345=>字符串“3”(长度=1)
    123=>字符串“2”(长度=1)