交换二维数组的第一级和第二级键[重复]

问题描述 投票:0回答:4

我有一个看起来像这样的数组

"name" => array:3 [
    1 => "Hello"
    4 => "Test"
    21 => "Test2"
  ]
"runkm" => array:3 [
    1 => "100.00"
    4 => "1000.00"
    21 => "2000.00"
  ]
"active" => array:3 [
    1 => "1"
    4 => "0"
    21 => "0"
  ]

我可以以某种方式将匹配的键与 PHP 函数组合起来,以便数组看起来像这样吗

1 => array:3 [
    name => "Hello"
    runkm => "100.00"
    active => "1"
  ]
4 => array:3 [
    name => "Test"
    runkm => "1000.00"
    active => "0"
  ]
21 => array:3 [
    name => "Test2"
    runkm => "2000.00"
    active => "0"
  ]
php arrays multidimensional-array transpose
4个回答
1
投票
$newArr=array();
foreach($array1 as $key => $value){
     $newArr[$key]=>array(
                'name'  =>$value[$key];
                'runkm' =>$array2[$key];
                'active'=>$array3[$key];
                 );
}

这就是创建一个新数组然后打印 $newArr 并检查是否得到你想要的结果的方法?祝你好运!


0
投票
<?php

$resultarr = array();
for($i=0;$i<count($sourcearr['name']);$i++) {
    $resultarr[] = array('name'=>$sourcearr['name'][$i], 'runkm'=>$sourcearr['runkm'][$i], 'active'=>$sourcearr['active'][$i]);
}

0
投票

这个效果很好。而且,不使用硬编码键。

<?php
    $arr = [
        "name" => [
            1 => "Hello",
            4 => "Test",
            21 => "Test2"
        ],
        "runkm" => [
            1 => "100.00",
            4 => "1000.00",
            21 => "2000.00"
        ],
        "active" => [
            1 => "1",
            4 => "0",
            21 => "0"
        ]
    ];

    // Pass the array to this function
    function extractData($arr){
        $newarr = array();
        foreach ($arr as $key => $value) {
            foreach($value as $k => $v) {
                if(!isset($newarr[$k]))
                    $newarr[$k] = array();
                $newarr[$k][$key] = $v;
            }
        }
        return $newarr;
    }

    print_r(extractData($arr));
?>

0
投票

我不确定 PHP 中是否有一个函数可以做到这一点,但也许你可以尝试一下

$arr1 = array(
   "name" => array(
        1 => "hello",
        4 => "test",
       21 => "test2",
    ),
   "runKm" => array(
        1 => "100",
        4 => "200",
        21 => "300",
    ),
  "active" => array(
        1 => "1",
        4 => "0",
        21 => "0",
        ),
    );

 // declare another that will hold the new structure of the array
 $nArr = array();
 foreach($arr1 as $key => $val) {
     foreach($val as $sub_key => $sub_val) {
        $nArr[$sub_key][$key] = $sub_val;
    }
 }

它所做的只是循环遍历每个数组及其值,并将其分配给另一个数组,即 $nArr。我希望它有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.