php - 将数组转换为数组

时间:2017-12-05 16:01:21

标签: php arrays

我有一个如下数组:

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,但我不知道该怎么做?请帮忙。

3 个答案:

答案 0 :(得分: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开始

答案 1 :(得分:0)

您可以使用array_map而无需回调(有关详细信息,请参阅手册中的示例#4):

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

答案 2 :(得分: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>