在php中从索引数组创建关联多维数组

在php中从索引数组创建关联多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个数组,当前看起来像这样: 它来自一个名为name=“buyer\u id[]”的表单 现在我希望它看起来像下面的数组,这样我就可以将它传递到数据库中: array( array( 'product_id' => 1 , 'name' => 'Paper Choco', 'category'=>'agent', 'staff_id'=> 1, 'date'=> '2014-08-22'

我有一个数组,当前看起来像这样: 它来自一个名为name=“buyer\u id[]”的表单

现在我希望它看起来像下面的数组,这样我就可以将它传递到数据库中:

   array(
     array(
      'product_id' => 1 ,
      'name' => 'Paper Choco',
      'category'=>'agent',
      'staff_id'=> 1,
      'date'=> '2014-08-22'
),
   array(
      'product_id' => 2 ,
      'name' => 'Paper Fan Vanilla ',
      'category'=>'agent',
      'staff_id'=> 1,
      'date'=> '2014-08-22'
),
   array(
      'product_id' => 4 ,
      'name' => 'Pink Prom ',
      'category'=>'agent',
      'staff_id'=> 1,
      'date'=> '2014-08-22'
)
);
我相信这是很有可能的,但我还无法找到一个解决办法作为替代:

$result = array();
foreach ($array as $key => $subarray) {
    foreach ($subarray as $i => $value) {
        if (!isset($result[$i])) {
            $result[$i] = array();
        }
        $result[$i][$key] = $value;
    }
}
$data = array ( 
    'product_id' => array ( 1, 2, 4 ),
    'name' => array ( 'Paper Choco', 'Paper Fan Vanilla', 'Pink Prom' ),
    'staff_id' => array ( 1, 1, 1 ),
    'category' => array ( 'agent', 'agent', 'agent', ),
    'date' => array ('2014-08-22', '2014-08-22', '2014-08-22' ),
    'price' => array ( 188, 887, 17 ),
);

function transpose($array) {
    array_unshift($array, null);
    return call_user_func_array('array_map', $array);
}

$result = transpose($data);
array_walk(
    $result,
    function (&$value) use ($data) {
        $value = array_combine(array_keys($data), $value);
    }
);

var_dump($result);

因此,如果您到目前为止已经尝试过解析这些数组,请分享感谢您的代码给了我我想要的东西,但是它仍然给了我一个错误,沿着“为foreach()提供的参数在第44行无效”,第44行{foreach($i=>$value的子数组)}我将继续这样做,在该方法中将错误报告给0。再次感谢您,原始数组的某些元素没有数组作为值?我认为它应该与您显示的输入一起工作。我对问题中的数组没有任何错误。如果(is_array($subarray)),您可以执行
if(is_array($subarray))
$data = array ( 
    'product_id' => array ( 1, 2, 4 ),
    'name' => array ( 'Paper Choco', 'Paper Fan Vanilla', 'Pink Prom' ),
    'staff_id' => array ( 1, 1, 1 ),
    'category' => array ( 'agent', 'agent', 'agent', ),
    'date' => array ('2014-08-22', '2014-08-22', '2014-08-22' ),
    'price' => array ( 188, 887, 17 ),
);

function transpose($array) {
    array_unshift($array, null);
    return call_user_func_array('array_map', $array);
}

$result = transpose($data);
array_walk(
    $result,
    function (&$value) use ($data) {
        $value = array_combine(array_keys($data), $value);
    }
);

var_dump($result);