How to reorder this array?

1

I have the following array:

$array_atual = array (
    'id_item' => array('1', '3'), // 'id_item', 'id_item'
    'cantidad' => array('15', '10') // 'cantidad', 'cantidad'
);

I would like to know how I could leave it in the following way:

$array_final (
    '0' => array('1', '15'); // 'id_item', 'cantidad'
    '1' => array('3', '10')     // 'id_item', 'cantidad'
);

How could I make this change?

    
asked by Tiago de Oliveira 10.06.2018 в 13:27
source

2 answers

1

Assuming that you have the same number of elements within the array of id_item y cantidad you would have to cycle one of the two, with that you would have the positions corresponding to one of each, and only add them to another temporary array.

I hope it serves you     

$arr = array(
    'id_item' => array(1,2,3,4,5),
    'cantidad' => array(10,20,30,40,50)
);

$newArr = array();
for( $i = 0; $i < count($arr['id_item']); $i++ ){
   $newArr[] = array( $arr['id_item'][$i], $arr['cantidad'][$i] );
}

print_r($newArr);
?>
    
answered by 10.06.2018 в 14:59
1

Similar to Alberto's solution, but with a forEach:

$array_atual = array (
    'id_item' => array('1', '3'), // 'id_item', 'id_item'
    'cantidad' => array('15', '10') // 'cantidad', 'cantidad'
);

$array_final = array();

forEach($array_atual as $array) {
    forEach($array as $key=>$value) {

        if (!array_key_exists($key, $array_final)) {
            $array_final[$key] = array();
        }

        array_push($array_final[$key], $value);

    }
}
    
answered by 10.06.2018 в 15:23