nazanin
nazanin

Reputation: 73

Merge data from two flat arrays into a 2d array of paired values, then json encode

I have an array like this:

array(5) { 
[0]=> array(1) 
  [0]=> int(1)       

[1]=> array(1)  
  [0]=> int(2) 

[2]=> array(1)  
  [0]=> int(3) 

[3]=> array(1)  
  [0]=> int(4)

[4]=> array(1)   
  [0]=> int(5)
   }

how can I divide it into 5 separate arrays? (Actually divide the array into its length)

This is my code:

$temp = array();
function toArr(){
return func_get_args();
}
//{('a',1),('b',2),('c',3),('d',4),('e',5)}
$a = array ('a','b','c','d','e');
$b = array(1,2,3,4,5);
$c = array_map ('toArr',$a,$b);

$collection1 = array_slice($c, 0, 1, true);
$collection2 = array_slice($c, 1, 1, true);
$collection3 = array_slice($c, 2, 1, true);
$collection4 = array_slice($c, 3, 1, true);
$collection5 = array_slice($c, 4, 1, true);
$temp[] = $collection1;
$temp[] = $collection2;
$temp[] = $collection3;
$temp[] = $collection4;
$temp[] = $collection5;
$jsondata = json_encode($temp); 
      echo $jsondata;

This is the output:

[[["a",1]],{"1":["b",2]},{"2":["c",3]},{"3":["d",4]},{"4":["e",5]}]

I want to have something like this: [["a",1],["b",2],["c",3],["d",4],["e",5]]

Upvotes: 1

Views: 86

Answers (3)

mickmackusa
mickmackusa

Reputation: 47904

Map the two arrays into subarrays for each pair, then json encode the result. Demo

$a = ['a', 'b', 'c', 'd', 'e'];
$b = [1, 2, 3, 4, 5];

echo json_encode(array_map(null, $a, $b));
# [["a",1],["b",2],["c",3],["d",4],["e",5]]

Upvotes: 0

Uours
Uours

Reputation: 2492

$array =
    array(  
         '0' => array( '0' => 1 )
        ,'1' => array( '0' => 2 ) 
        ,'2' => array( '0' => 3 ) 
        ,'3' => array( '0' => 4 )
        ,'4' => array( '0' => 5 )
   );

foreach( $array as $key => $value )
{
    /*
     *  Variable variables
     */
    ${'array' .$key} = $value;
}

var_dump( $array0 );
var_dump( $array1 );
var_dump( $array2 );
var_dump( $array3 );
var_dump( $array4 );

Result

array (size=1)
  0 => int 1

array (size=1)
  0 => int 2

array (size=1)
  0 => int 3

array (size=1)
  0 => int 4

array (size=1)
  0 => int 5

Upvotes: 0

aland
aland

Reputation: 2004

Not sure what you're trying to achieve but you can use a loop and access each array, in this example as the variable $a. Have a read of http://php.net/manual/en/control-structures.foreach.php

foreach($arr as $a) {
    //do what you want with $a
    print_r($a);
}

Upvotes: 2

Related Questions