组合相同的数组索引?

时间:2016-04-01 15:38:07

标签: php arrays merge

我有以下$ _POST数组

array(5) {
  ["addcatagory"]=>
  string(8) "CATEGORY"
  ["reg_admin_id"]=>
  string(2) "25"
  ["subcatagory"]=>
  array(2) {
    [0]=>
    string(9) "SUB CAT 1"
    [1]=>
    string(9) "sub cat 2"
  }
  ["subCat_Detais"]=>
  array(2) {
    [0]=>
    string(9) "AAAAAAAAA"
    [1]=>
    string(8) "BBBBBBBB"
  }
  ["submit"]=>
  string(15) "Submit Catagory"
}

array(1) {
  ["subCatFile1"]=>
  array(5) {
    ["name"]=>
    array(3) {
      [0]=>
      string(5) "2.jpg"
      [1]=>
      string(5) "3.jpg"
      [2]=>
      string(0) ""
    }
    ["type"]=>
    array(3) {
      [0]=>
      string(10) "image/jpeg"
      [1]=>
      string(10) "image/jpeg"
      [2]=>
      string(0) ""
    }
    ["tmp_name"]=>
    array(3) {
      [0]=>
      string(18) "/var/tmp/phpN5ENy2"
      [1]=>
      string(18) "/var/tmp/phpRyJdcc"
      [2]=>
      string(0) ""
    }
    ["error"]=>
    array(3) {
      [0]=>
      int(0)
      [1]=>
      int(0)
      [2]=>
      int(4)
    }
    ["size"]=>
    array(3) {
      [0]=>
      int(65101)
      [1]=>
      int(49550)
      [2]=>
      int(0)
    }
  }
}

现在我要实现的是在一个数组中合并0子索引和subcat_details,在第二个数组中合并1个子目录索引和subcat_details,依此类推...... 我怎么能实现这个?它甚至可能吗?

期望

array( 'name' => 'SUB CAT 1',
       'details' => 'AAAAAAAAA',
       'image_name'=>'2.jpg'
     );

array( 'name' => 'SUB CAT 2',
       'details' => 'BBBBBBB',
       'image_name'=>'2.jpg'
     );

1 个答案:

答案 0 :(得分:1)

这可以通过简单的foreach()循环 -

来完成
$newArray = [];
foreach($_POST["subcatagory"] as $key => $value) {
    $newArray[] = array("name" => $_POST["subcatagory"][$key],
                        "details" => $_POST["subCat_Detais"][$key]);
}

正如@CharlotteDunois所提到的,你也可以使用for()循环,只要你有连续的密钥,没有密钥丢失 -

$newArray = [];
for($i=0;$i<count($_POST["subcatagory"]);$i++) {
    $newArray[] = array("name" => $_POST["subcatagory"][$i],
                        "details" => $_POST["subCat_Detais"][$i]);
}