来自一个循环php的多个值

时间:2015-03-28 21:09:13

标签: php arrays

如果我有这个数组 -

$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
                            );
}

但这是错误的格式。有什么提示吗?

2 个答案:

答案 0 :(得分:1)

怎么样:

$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

答案 1 :(得分:1)

您可以使用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);

结果应该按照您的意愿打印出来。很抱歉没有对我自己的代码进行测试,只需输入我的脑袋遗失时间和解释器:)