将多维数组访问为单个数组

时间:2014-12-02 11:56:10

标签: php mysql

我有一个来自POST的多维数组;

array(4) { 
   ["id"]=> array(3) { 
        [0]=> string(1) "4" 
        [1]=> string(1) "5" 
        [2]=> string(1) "6" 
      } 
   ["deliverer"]=> array(3) { 
        [0]=> string(13) "x" 
        [1]=> string(12) "y" 
        [2]=> string(5) "z" 
      } 
   ["num_users"]=> array(3) { 
        [0]=> string(2) "10" 
        [1]=> string(2) "10" 
        [2]=> string(1) "5" 
      } 
   ["ADD"]=> string(6) "FORWARD" 
      } 

我想将ID与" deliveryrer"和#34; num_users"为了更新MySQL中的表。我试过这种方式:

foreach ($_POST as $data){
    var_dump($data);
  }

foreach ($_POST as $key=>$value){
    var_dump($value);
  }

但在这两种情况下我都没有朝着正确的方向前进。我不是那么熟练所以我希望得到一些关于如何正确进行的提示。

亲切的问候,

克里斯

2 个答案:

答案 0 :(得分:1)

$ids = $_POST['id'];
$deliverer = array();
$num_users = array();
$num_usersRaw = $_POST['num_users'];
$i=0;
foreach ($_POST['deliverer'] as $k=>$v) {
  $id = $ids[$i];
  $deliverer[$id] = $v;
  $num_users[$id] = $num_usersRaw[$i];
  ++$i;
}

说明:

首先获取所有ID。

这将作为deliverernum_rows数组的键。

循环$_POST['deliverer'],然后为两个数组分配键值:$deliverer$num_users

答案 1 :(得分:0)

这是一个潜在的解决方案,取决于您最终想要的内容。

$datas = array();
foreach ($_POST['id'] as $k => $id) {
  $datas[] = array("id" => $id, "deliverer" => $_POST['deliverer'][$k], "num_users" => $_POST['num_users'][$k]);
}

“更易于理解”的解决方案将是:

$datas = array();
foreach ($_POST['id'] as $k => $id) {
  $datas[$k]['id'] = $id; // or $_POST['id'][$k]
  $datas[$k]['deliverer'] = $_POST['deliverer'][$k];
  $datas[$k]['num_users'] = $_POST['num_users'][$k];
}