一个循环php中有多个值


Multiple values from one loop php

如果我有这个数组-

$data_item['actor_id'] = $this->input->post('actor_id');
$data_item['item_number'] = $this->input->post('item_number');

这给了我这个阵列-

Array ( 
    [actor_id] => Array ( 
        [0] => 162652153 
        [1] => 162652154 
    ) 
    [item_number] => Array ( 
        [0] => 3 
        [1] => 6 
    ) 
)

我需要把我的数据转换成这种格式-

$data = array(
   array(
      'actor_id' => '3342' ,
      'item_number' => '57567'
   ),
   array(
      'actor_id' => '876' ,
      'item_number' => '94' 
   )
);

我已经尝试了各种循环方式,但我似乎无法获得它。例如两个单独的循环,如

foreach($data_item['actor_id'] as $key => $value){
$thevalue[] = array('actor_id' => $value
                            );
}

但格式不对。有什么建议吗?

关于:

$d = [
    'actor_id' => [
        1,
        2,
    ],
    'item_number' => [
        3,
        4,
    ],
]; 
$res = [];
foreach ( $d as $key => $data ) {
    foreach ( $data as $index => $value ) {
        $res [ $index ] [$key] = $value;
    }
}

我将生成:

array(2) {
  [0]=>
  array(2) {
    ["actor_id"]=>
    int(1)
    ["item_number"]=>
    int(3)
  }
  [1]=>
  array(2) {
    ["actor_id"]=>
    int(2)
    ["item_number"]=>
    int(4)
  }
}

HTH

您可以根据需要使用actor_id键来压平数据:

$data = array();  // your new array
foreach($data_item['actor_id'] as $key => $value) {
    // make sure we have an array for this key and add actor id
    if (!isset($data[$key])) $data[$key] = array();
    $data[$key]['actor_id'] = $value;
    // now check if we have an item number for this key and add it
    if (isset($data_item['item_number'][$key]))
        $data[$key]['item_number'] = $data_item['item_number'][$key];
}
print_r($data);

结果应该按照你想要的打印出来。很抱歉没有自己测试代码,只是在我脑子里打出来错过了时间和翻译:)