转置多维数组中的子数组数据并将1添加到新的第一级键

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

我有一个如下所示的数组:

array:3 [▼
  "_token" => "hLuF5TLimRRkxRUOeeWoOby7iXLNXU7EiHRmTAso"
  "room_id" => array:3 [▼
    0 => "089a6ca8-26de-3ca2-bbbf-17c410d15266"
    1 => "13c56ac2-6c77-3ca7-b24a-2a70f4f0526c"
    2 => "2d9b7392-aa50-37e4-882a-804affb87223"
  ]
  "new_electric" => array:3 [▼
    0 => "123"
    1 => "234"
    2 => "345"
  ]
]

我怎样才能将它切成新的数组,就像

array:4 [▼
  "_token" => "hLuF5TLimRRkxRUOeeWoOby7iXLNXU7EiHRmTAso"
  "1" => array:2 [▼
    "room_d" => "089a6ca8-26de-3ca2-bbbf-17c410d15266"
    "new_electric => "123"
  ]
  "2" => array:2 [▼
    "room_id" => "13c56ac2-6c77-3ca7-b24a-2a70f4f0526c"
    "new_electric" => "234"
  ]
  "3" => array:2 [▼
    "room_id" => "2d9b7392-aa50-37e4-882a-804affb87223"
    "new_electric" => "345"
      ]
]

我想我需要使用

array_push
,但我不知道该怎么做。

php arrays multidimensional-array transpose
3个回答
4
投票

你必须使用

foreach

$arr = array(
      "_token" => "hLuF5TLimRRkxRUOeeWoOby7iXLNXU7EiHRmTAso",
      "room_id" => array(
        0 => "089a6ca8-26de-3ca2-bbbf-17c410d15266",
        1 => "13c56ac2-6c77-3ca7-b24a-2a70f4f0526c",
        2 => "2d9b7392-aa50-37e4-882a-804affb87223",
      ),
      "new_electric" => array(
        0 => "123",
        1 => "234",
        2 => "345",
      )
    );

    $final = array();
    $final[ "_token" ] = $arr[ "_token" ];

    foreach( $arr[ "room_id" ] as $key => $value ) {

        $final[ ( $key + 1 ) ] = array(
            "room_id" => $value,
            "new_electric" => $arr[ "new_electric" ][ $key ]
        );

    }

这将导致:

   Array
(
    [_token] => hLuF5TLimRRkxRUOeeWoOby7iXLNXU7EiHRmTAso
    [1] => Array
        (
            [room_id] => 089a6ca8-26de-3ca2-bbbf-17c410d15266
            [new_electric] => 123
        )

    [2] => Array
        (
            [room_id] => 13c56ac2-6c77-3ca7-b24a-2a70f4f0526c
            [new_electric] => 234
        )

    [3] => Array
        (
            [room_id] => 2d9b7392-aa50-37e4-882a-804affb87223
            [new_electric] => 345
        )

)

注意:使用

$key + 1
因为您希望索引从 1 开始


0
投票

您可以使用

array_map
而无需回调(请查看手册中的示例 #4 了解更多详细信息):

$result = array_map(null, $arr["room_id"], $arr["new_electric"]);
$result['_token'] = $arr['_token'];

0
投票

其他方式

  <pre>
    <?php
    $array=array(3=>array("_token"=>"hLuF5TLimRRkxRUOeeWoOby7iXLNXU7EiHRmTAso","room_id"=>array("0"=>"089a6ca8-26de-3ca2-bbbf-17c410d15266"
        ,"1"=>"13c56ac2-6c77-3ca7-b24a-2a70f4f0526c","2"=>"50-37e4-882a-804affb87223"),"new_electric"=>array(0=>"123","1"=>"234","2"=>"345")));
    print_r($array);
    $i=0;
    $array4=array();
    array_push($array4,$array[3]["_token"]);
    foreach($arr2 as $value){
          array_push($array4,array($array[3]["room_id"][$i],$array[3]["new_electric"][$i]));
          $i++;
    }
    print_r($array4);
    ?>

    </pre>
© www.soinside.com 2019 - 2024. All rights reserved.