簡體   English   中英

如何在新的多維數組中用相同的索引分隔鍵值

[英]How to separated key values with same index in a new 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
        )
)

在上面的輸出中,我在新數組中分離了具有相同索引的鍵值。

可能嗎?

您可以使用array_map函數

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

演示

這是解決方案之一:

<?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)
  }
}

這段代碼運行良好,可以完成您想要的工作,嘗試在編輯器上復制粘貼並運行它。

<?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);
?>

我已經從PHP找到了解決方案-如何翻轉2D數組帖子的行和列

$out = array();
foreach ($array as  $rowkey => $row) {
    foreach($row as $colkey => $col){
        $out[$colkey][$rowkey]=$col;
    }
}

這對我來說非常合適。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM