【问题标题】:Convert value from specific multidimensional array key into key in new array with original arrays as value将特定多维数组键中的值转换为以原始数组为值的新数组中的键
【发布时间】:2015-05-06 03:46:20
【问题描述】:

基本上我只是想知道是否有内置的方法可以做到这一点,这可能会更快,比如使用 array_map 回调或其他东西:

function array_rekey($a, $column)
{
    $array = array();
    foreach($a as $keys) $array[$keys[$column]] = $keys;
    return $array;
}

【问题讨论】:

  • 我不这么认为。你的方法是最好的。
  • 那么摇滚吧。

标签: php arrays multidimensional-array


【解决方案1】:

这应该适合你:

只需将NULL 作为第二个参数传递给array_column() 即可将整个数组作为值返回,并使用$column 作为键的第三个参数。

$result = array_column($arr, NULL, $column);

示例输入/输出:

$arr = [
        ["a" => 1, "b" => 2, "c" => 3],
        ["a" => 4, "b" => 5, "c" => 6],
        ["a" => 7, "b" => 8, "c" => 9],
    ];

$column = "b";
$result = array_column($arr, NULL, $column);
print_r($result);

输出:

Array
(
    [2] => Array
        (
            [a] => 1
            [b] => 2
            [c] => 3
        )

    [5] => Array
        (
            [a] => 4
            [b] => 5
            [c] => 6
        )

    [8] => Array
        (
            [a] => 7
            [b] => 8
            [c] => 9
        )

)

【讨论】:

  • 谢谢。不幸的是,我的 ded 服务器上没有可用的 array_column()。
  • @Thom 你可以用array_combine()array_map() 做一些解决方法,像这样:$result = array_combine( array_map(function($v)use($column){ return $v[$column] }, $a), $a); 或者你可以在php 5.5 下使用array_column()
  • 很好,不知道 array_column 有这些隐藏的参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多