繁体   English   中英

将多维数组转化为关联多维数组

[英]Turn multidimensional array into associative multidimentional array

我有一个这样的数组

$myArray = [
   [
       'key1' => $val1,
       'key2' => $val2,
       'key3' => $val3,
   ],
   [
       'key1' => $val4,
       'key2' => $val5,
       'key3' => $val6,
   ],
];

我想将$myArray转换成这样的关联数组

$myArray = [
   $val3 => [
       'key1' => $val1,
       'key2' => $val2,
       'key3' => $val3,
   ],
   $val6 =>[
       'key1' => $val4,
       'key2' => $val5,
       'key3' => $val6,
   ],
];

是否有 php 函数或函数组合可以为您执行此操作?

也许像这样?

function conv_arr($arr) {
    $newArr = [];
    foreach ($arr as $r) {
        $newArr[end($r)] = $r;
    }
    return $newArr;
}

如果你想获得一个新的array与上次key每个阵列的,试试这个:

<?php
$new = array();
$myArray = [
   [
       'key1' => 1,
       'key2' => 2,
       'key3' => 3,
   ],
   [
       'key1' => 4,
       'key2' => 5,
       'key3' => 6,
   ],
];

foreach( $myArray as $array ){
    end($array);
    $key = key($array);
    $new[$array[$key]] = $array;
}

print_r($new);

仅使用foreach

One-liner,为了更好地理解几行:

print_r(
    array_combine(
        array_column($myArray, 'key3'),
        $myArray
    )
);

如果您的示例输出说明了您打算使用的模式,那么您可以使用此示例作为指导。 有关分步说明,请参阅评论。

<?php

// Your variables defined.
$val1 = 1;
$val2 = 2;
$val3 = 3;
$val4 = 4;
$val5 = 5;
$val6 = 6;

// Your input array.
$myArray = [
   [
       'key1' => $val1,
       'key2' => $val2,
       'key3' => $val3,
   ],
   [
       'key1' => $val4,
       'key2' => $val5,
       'key3' => $val6,
   ],
];

$result = [];
// Loop over each element of your input array
foreach ($myArray as $el)
    // Use the value of the last element of each child array as the index to the child.
    $result[end($el)] = $el;

var_dump($result);

输出:

/*
array(2) {
  [3]=>
  array(3) {
    ["key1"]=>
    int(1)
    ["key2"]=>
    int(2)
    ["key3"]=>
    int(3)
  }
  [6]=>
  array(3) {
    ["key1"]=>
    int(4)
    ["key2"]=>
    int(5)
    ["key3"]=>
    int(6)
  }
}
*/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM