如何在新的多维数组中用相同的索引分隔键值

时间:2018-12-12 10:08:35

标签: php arrays multidimensional-array

我在多维数组下面,需要帮助以特定形式转换多维

Array
(
    [0] => Array
        (
            [0] => 20
            [1] => 15
            [2] => 0
        )

    [1] => Array
        (
            [0] => 28
            [1] => 45
            [2] => 0
        )

    [2] => Array
        (
            [0] => 20
            [1] => 5
            [2] => 50
        )

    [3] => Array
        (
            [0] => 48
            [1] => 20
            [2] => 0
        )

)

并想要这样转换:

Array
(
    [0] => Array
        (
            [0] => 20
            [1] => 28
            [2] => 20
            [3] => 48
        )

    [1] => Array
        (
            [0] => 15
            [1] => 45
            [2] => 5
            [3] => 20
        )

    [2] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 50
            [3] => 0
        )
)

在上面的输出中,我在新数组中分离了具有相同索引的键值。

有可能吗?

4 个答案:

答案 0 :(得分:1)

您可以使用array_map功能

$result = array_map(null, ...$array);

demo

答案 1 :(得分:1)

这是解决方案之一:

<?php

$array =
[
    0 =>
        [
            0 => 20,
            1 => 15,
            2 => 0
        ],

    1 =>
        [
            0 => 28,
            1 => 45,
            2 => 0
        ],

    2 =>
        [
            0 => 20,
            1 => 5,
            2 => 50
        ],

    3 =>
        [
            0 => 48,
            1 => 20,
            2 => 0
        ]
];

$result = [];
echo '<pre>';
foreach ($array as $key => $value) {
    for ($i = 0; $i<count($value); $i++) {
        $result[$i][] = $value[$i];
    }
}


var_dump($result);

结果:

array(3) {
  [0]=>
  array(4) {
    [0]=>
    int(20)
    [1]=>
    int(28)
    [2]=>
    int(20)
    [3]=>
    int(48)
  }
  [1]=>
  array(4) {
    [0]=>
    int(15)
    [1]=>
    int(45)
    [2]=>
    int(5)
    [3]=>
    int(20)
  }
  [2]=>
  array(4) {
    [0]=>
    int(0)
    [1]=>
    int(0)
    [2]=>
    int(50)
    [3]=>
    int(0)
  }
}

答案 2 :(得分:0)

此代码可以正常工作,并且可以完成您想要的操作,尝试在编辑器上复制粘贴并运行它。

<?php 
   $originalArray = Array(
         Array
            (
                 20,
                 15,
                 0
            ),

         Array
            (
                 28,
                 45,
                 0
            ),

         Array
            (
                 20,
                 5,
                 50
            ),

         Array
            (
                 48,
                 20,
                 0
            )

    ); //echo"<pre>";print_R($originalArray); 00 10 20 30 40 : 01,11,21,31 :  02,12,22,32,    
$newArray =array();
//echo count($originalArray);
//echo count($originalArray[1]);
$count = array_map('count', $originalArray);
$min = array_keys($count , max($count))[0];
$largest_arr = $originalArray[$min];

for($i=0;$i<count($largest_arr);$i++){
array_push($newArray,$originalArray[$i]);
    for($j=0;$j<count($originalArray);$j++){
echo $j."--".$i."---".count($originalArray)."----".$originalArray[$j][$i]."<br>";
        array_push($newArray[$i],$originalArray[$j][$i]);
    }
}
echo "<pre>";print_R($newArray);
?>

答案 3 :(得分:0)

我从PHP - how to flip the rows and columns of a 2D array帖子中找到了解决方法

private onRowClick() {
  this.setState(...);
}
<TableView
  ref={this.tableViewRef}
  onRowClick={this.onRowClick}
/>

这对我来说很好。