将多维数组转换为关联多维数组
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;
}
如果您的示例输出说明了您打算使用的模式,那么您可以使用此示例作为指南。请参阅评论以获得 step-by-step 解释。
<?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)
}
}
*/
如果你想用每个数组的最后一个 key
得到一个新的 array
,试试这个:
<?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
)
);
我有一个这样的数组
$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;
}
如果您的示例输出说明了您打算使用的模式,那么您可以使用此示例作为指南。请参阅评论以获得 step-by-step 解释。
<?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)
}
}
*/
如果你想用每个数组的最后一个 key
得到一个新的 array
,试试这个:
<?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
)
);