php数组:用子键替换父键

a0x5cqrl  于 2023-06-04  发布在  PHP
关注(0)|答案(4)|浏览(258)

如何在php中替换数组中的键,用子数组的键来获得这样的效果:来自:

`Array
(
    [0] => Array
        (
            [for_a] => me
        )

    [1] => Array
        (
            [for_b] => you
        )

    [2] => Array
        (
            [for_c] => bleeh
        )
)`

致:

`Array
(
    [for_a] => me
    [for_b] => you
    [for_c] => bleeh

)`

我尝试使用array_column,但没有效果

uplii1fm

uplii1fm1#

你可以这样做:
此方法假定每个元素中只有一个元素(硬编码的[0]$arr2[array_keys($arr)[0]] = array_values($arr)[0];中)

<?php
//initialize source array
$arr1 = array(
    array("for_a"=>"me"),
    array("for_b"=>"you"),
    array("for_c"=>"bleeh")
);

//initialize output array
$arr2 = array();

//debug printsource array
print_r ($arr1);

foreach($arr1 as $arr){
    $arr2[array_keys($arr)[0]] = array_values($arr)[0];

}
//debug: print output array
print_r ($arr2);

这不是最优雅的方式。有一个名为array_walk的方法,您可以在其中定义一个回调函数来解析数组中的每个元素,您可以确保不会覆盖数组中的现有元素。

7uhlpewt

7uhlpewt2#

@Josste给出了一个很好的例子,这里有另一种你可以做到的方法:
遍历数组两次,一次是获取父数组,然后再次遍历每个子数组,然后使用父键更新输出的new数组键。

<?php
$array = [
    [
        'for_a' => 'me'
    ],
    [
        'for_b' => 'you'
    ],
    [
        'for_c' => 'bleeh'
    ]
];

$new = [];
foreach($array as $arr) {
    foreach($arr as $key => $val) {
        $new[key($arr)] = $val;
    }
}

echo "<pre>" . print_r($new, TRUE) . "</pre>";
ozxc1zmp

ozxc1zmp3#

试试这个php脚本:

<?php

$vetor[] = array("for_a" => "me");
$vetor[] = array("for_b" => "you");
$vetor[] = array("for_c" => "bleeh");

print_r($vetor);

foreach($vetor as $x)
{
    foreach($x as $key=>$value) {
        $vetor2[$key] = $value;
    }
}

print_r($vetor2);
jhiyze9q

jhiyze9q4#

如果你想要詹姆斯和罗纳尔多的答案的功能风格版本:

$input = [
    [ "for_a" => "me" ],
    [ "for_b" => "you" ],
    [ "for_c" => "bleeh", "for_d" => "blerg" ]
];

$output = array_reduce($input, 'array_merge', []);

var_dump( $output );

输出:

array(4) {
  ["for_a"]=>
  string(2) "me"
  ["for_b"]=>
  string(3) "you"
  ["for_c"]=>
  string(5) "bleeh"
  ["for_d"]=>
  string(5) "blerg"
}

参考:https://www.php.net/manual/en/function.array-reduce.php

相关问题