Php 重新排列数组

Php 重新排列数组,php,arrays,Php,Arrays,我在提交表单时获得此数组 array 'item' => array 0 => string 'Salt' 1 => string 'Pepper' 'quantity' => array (size=2) 0 => string '2 spoon' 1 => string '5' 现在我们要重新排列上面的数组,所以它应该是 array '0' => array

我在提交表单时获得此数组

array
  'item' => 
    array
      0 => string 'Salt'
      1 => string 'Pepper'
  'quantity' => 
    array (size=2)
      0 => string '2 spoon'
      1 => string '5'
现在我们要重新排列上面的数组,所以它应该是

array
  '0' => 
    array
      'item' => string 'Salt'
      'quantity' => string '2 spoon'
  '1' => 
    array
      'item' => string 'Pepper'
      'quantity' => string '5'

我尝试了很多组合,但都失败了,有人能帮我重新排列这个数组吗。任何帮助都将不胜感激。

希望您的数组存储在
$array
变量中,并且
项处于前导。这意味着数组中始终存在一个项,而不总是数量

<?php
foreach($array['item'] as $key => $item) {
   $newArray[$key]['item'] = $item;
   if (isset($array['quantity'][$key]) {
      $newArray[$key]['quantity'] = $array['quantity'][$key];
   } else {
      $newArray[$key]['quantity'] = 0;
}
?>

试试这个,我想这会对你有帮助

$a = array(
        'item' =>
        array(
            0 => 'Salt',
            1 => 'Pepper'),
        'quantity' =>
        array(
            0 => '2 spoon',
            1 => '5')
    );

    $i = 0;
    foreach($a['item'] as $row){
        $b[$i]["item"] = $row;
        $b[$i]["quantity"] = $a['quantity'][$i];
        $i++;
    }
    print_r($b);
print\r()
的输出将是

Array
(
    [0] => Array
        (
            [item] => Salt
            [quantity] => 2 spoon
        )

    [1] => Array
        (
            [item] => Pepper
            [quantity] => 5
        )

)
按下面的方法做-

<?php
$arr=array(
  'item' => 
    array(
      0 => 'Salt' ,
      1 => 'Pepper'
       ),
  'quantity' => 
    array (
      0 =>'spoon',
      1 =>'5'
      )
);
$result=array();
$com=array_combine($arr['item'],$arr['quantity']);
foreach($com as $k=>$v)
{
   $result[]=array("item"=>$k,"quantity"=>$v);
}
print_r($result);
?>
试试这个

$array = array(
    'item' =>
    array(
        0 => 'Salt',
        1 => 'Pepper'),
    'quantity' =>
    array(
        0 => '2 spoon',
        1 => '5')
);
$new_array = array();
foreach ($array['item'] as $key => $value) {
    $new_array[$key]["item"] = $value;
    $new_array[$key]["quantity"] = $array['quantity'][$key];
}
echo "<pre>";
var_dump($new_array);
$array=array(
'项目'=>
排列(
0=>“盐”,
1=>“胡椒”),
“数量”=>
排列(
0=>“2匙”,
1 => '5')
);
$new_array=array();
foreach($key=>$value的数组['item']as$key){
$new_数组[$key][“item”]=$value;
$new_数组[$key][“quantity”]=$array['quantity'][$key];
}
回声“;
变量转储(新数组);

您可以简单地使用
array\u walk
如下


让我们看看你在问题中尝试了什么。什么形式?请在您的问题中提供更多详细信息您为什么使用计数器?@AgeDeO为什么不使用?需要连接的元素在不同数组中共享相同的索引:PYou可以使用数组的键(顺便说一句;)@在任何地方,它都不是一个额外的变量,当键在数组中确实有意义时(你不知道它们没有意义),代码将中断,而不是使用函数,foreach只需使用
foreach
yep@Uchiha,我很快就意识到了这一点……我并没有删除,因为我刚刚展示了一个备选方案:)仍然输出前两个元素如果数组中有两个以上的元素,请检查是否根据您的要求更新@Adnan
$array = array(
    'item' =>
    array(
        0 => 'Salt',
        1 => 'Pepper'),
    'quantity' =>
    array(
        0 => '2 spoon',
        1 => '5')
);
$new_array = array();
foreach ($array['item'] as $key => $value) {
    $new_array[$key]["item"] = $value;
    $new_array[$key]["quantity"] = $array['quantity'][$key];
}
echo "<pre>";
var_dump($new_array);
$result = [];
array_walk($arr['item'], function($v, $k)use(&$result, $arr) {
   $result[$k]['item'] = $arr['item'][$k];
   $result[$k]['quantity'] = $arr['quantity'][$k];
});
print_r($result);