首页 > 解决方案 > 循环遍历数组并按索引添加到另一个数组

问题描述

我有一个看起来像这样的数组:

array(8) {
  ["rentalPropertyAddress"]=>
  array(15) {
    [0]=>
    string(11) "111 tree st"
    [1]=>
    string(11) "112 tree st"
    [2]=>
    string(11) "122 tree st"
  }
  ["gasInitialized"]=>
  array(15) {
    [0]=>
    string(2) "on"
    [1]=>
    string(2) "on"
    [2]=>
    string(3) "off"
  }
  ["waterInitialized"]=>
  array(15) {
    [0]=>
    string(3) "off"
    [1]=>
    string(2) "on"
    [2]=>
    string(2) "on"
  }
  ["electricInitialized"]=>
  array(15) {
    [0]=>
    string(2) "on"
    [1]=>
    string(2) "on"
    [2]=>
    string(3) "off"
  }
  ["inspectionDate"]=>
  array(15) {
    [0]=>
    string(0) ""
    [1]=>
    string(0) ""
    [2]=>
    string(0) ""
  }
  ["rentalDate"]=>
  array(15) {
    [0]=>
    string(0) ""
    [1]=>
    string(0) ""
    [2]=>
    string(0) ""
  }
  ["vacantInitialized"]=>
  array(15) {
    [0]=>
    string(2) "no"
    [1]=>
    string(2) "no"
    [2]=>
    string(3) "yes"
  }
}

我需要做的是将每个数组的每个索引添加到另一个数组或数组中。例如,预期的输出将是:

array {
  array {
    [0] => string(11) "111 tree st"
    [1] => string(2) "on"
    [2] => string(3) "off"
    [3] => string(2) "on"
    [4] => string(0) ""
    [5] => string(0) ""
    [6] => string(2) "no"
  }
  ...
}

我已经尝试通过循环遍历数组并保留它的索引来使用 forloop 执行此操作:

$i = -1;
$retval = array();
foreach ($_GET as $key => $item) {
    $i += 1;
    $retval[$i] = $item[$i];
}
echo "<pre>";var_dump($retval);

但输出不是我所期望的:

array(8) {
  [0]=>
  string(11) "111 tree st"
  [1]=>
  string(2) "on"
  [2]=>
  string(2) "on"
  [3]=>
  string(3) "off"
  [4]=>
  string(0) ""
  [5]=>
  string(0) ""
  [6]=>
  string(3) "yes"
  [7]=>
  string(1) "5"
}

如何成功地将数组中的数据提取到不同的数组中?

标签: phparraysmultidimensional-arrayrotationtranspose

解决方案


如果我没有误解您所需的输出,那么您可以使用两个 foreach()来迭代每个嵌套数组并按所有嵌套数组的索引位置推送每个元素。

   $_GET = [
         "rentalPropertyAddress"=>["111 tree st","112 tree st","122 tree st"],
         "gasInitialized"=>["on","on","off"],
         "waterInitialized"=>["off","on","on"],
         "electricInitialized"=>["on","on","off"],
         "inspectionDate"=>["","",""],
         "rentalDate"=>["","",""],
         "vacantInitialized"=>["no","no","yes"]
];

$retval = [];
foreach ($_GET as $key => $item) {
    $i=0;
    foreach($item as $k=>$v){
      $retval[$i][] = $v;
      $i++;
    }  
}
echo "<pre>";
print_r($retval);
echo "</pre>";

演示: https ://3v4l.org/LrpGo


推荐阅读