簡體   English   中英

PHP多維數組到單個數組

[英]PHP multidimensional array to individual arrays

我有一個允許輸入多個值的表單

車一

<input type="text" name="vehicle[]" placeholder="Enter Your Vehicle" />

車二

<input type="text" name="vehicle[]" placeholder="Enter Your Vehicle" />

提交后,它會轉換為這樣的數組

["vehicle"]=>
  array(1) {
    [0]=>
    string(5) "Acura"
    [1]=>
    string(5) "Mazda"
 }

["doors"]=>
  array(1) {
    [0]=>
    string(6) "4 Door"
    [1]=>
    string(6) "2 Door"
  }

然后我想將其轉換為像這樣的單個數組

[VehicleOne]=>
  array(1) {
    [vehicle]=>
    string(5) "Acura"
    [doors]=>
    string(5) "4 door"
  }

我創建了一個自定義函數來執行此操作,但我想知道是否可以使用本機 php 方法而不是多個循環?

所以這就是我目前正在使用的。 並非每個 $_POST 值都是一個數組,因此我必須檢查,如果是,則將它們分開。

foreach ($fields as $key => $row) {

   if(is_array($row)){

     foreach ($row as $column => $value) {

        $doctors[$column][$key] = $value;

     }

  }

}

不需要,只需在輸入中按照您希望的方式構造數組:

<input type="text" name="data[0][vehicle]" placeholder="Enter Your Vehicle" />
<input type="text" name="data[1][vehicle]" placeholder="Enter Your Vehicle" />
<input type="text" name="data[0][doors]"   placeholder="Enter Your Doors" />
<input type="text" name="data[1][doors]"   placeholder="Enter Your Doors" />

然后$_POST將包含:

Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [vehicle] => Acura
                    [doors] => 4 door
                )

            [1] => Array
                (
                    [vehicle] => Maza
                    [doors] => 2 door
                )
        )
)

如果您不能/不會更改表單,則類似於:

foreach($_POST['vehicle'] as $k => $v) {
    $result[] = ['vehicle' => $v, 'doors' => $_POST['doors'][$k]];
}

將產生:

Array
(
    [0] => Array
        (
            [vehicle] => Acura
            [doors] => 4 door
        )

    [1] => Array
        (
            [vehicle] => Maza
            [doors] => 2 door
        )
)

當使用數組時,使用像VehicleOne東西是沒有意義的,因為你這樣做只是為了使它獨一無二,當 0、1 等已經是。

也許這對你有用?
我創建了一個帶有關聯鍵的臨時數組,稍后我將其提取到多個數組($vehicle1 和 2)。

Foreach($vehicle["vehicle"] as $key => $v){
    $temp["vehicle" . ($key+1)]["vehicle"] = $v;
    $temp["vehicle" . ($key+1)]["doors"] = $d["doors"][$key];
}
Extract($temp);
Var_dump($vehicle1, $vehicle2);

這是一個循環,至少不是多個循環。

https://3v4l.org/ltoEs

暫無
暫無

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

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