Question

I have array named $result_for_json_all

Array
(
[0] => Array
    (
    )

[1] => Array
    (
        [0] => Array
            (
                [CurrencyAbbreviation] => AUD
                [DateOfCurrencyRate] => 2012-12-11
                [NumberOfInputRow] => 1
                [FinalCurrencyRate] => 0.571
            )

    )

[2] => Array
    (
        [0] => Array
            (
                [CurrencyAbbreviation] => CAD
                [DateOfCurrencyRate] => 2013-12-22
                [NumberOfInputRow] => 4
                [FinalCurrencyRate] => 0.48
            )

        [1] => Array
            (
                [NumberOfInputRow] => 2
                [FinalCurrencyRate] => 
            )

        [2] => Array
            (
                [NumberOfInputRow] => 3
                [FinalCurrencyRate] => 
            )

    )

)

Want to get

Array
(
[0] => Array
            (
                [CurrencyAbbreviation] => AUD
                [DateOfCurrencyRate] => 2012-12-11
                [NumberOfInputRow] => 1
                [FinalCurrencyRate] => 0.571
            )

[1] => Array
            (
                [CurrencyAbbreviation] => CAD
                [DateOfCurrencyRate] => 2013-12-22
                [NumberOfInputRow] => 4
                [FinalCurrencyRate] => 0.48
            )

[2] => Array
            (
                [NumberOfInputRow] => 2
                [FinalCurrencyRate] => 
            )

[3] => Array
            (
                [NumberOfInputRow] => 3
                [FinalCurrencyRate] => 
            )


)

Based on this https://stackoverflow.com/a/9416851/2118559 created code

function flatten($result_for_json_all) {
$arr = array();
foreach($result_for_json_all as $k => $v) {
    if(is_array($v)) {
        $arr = array_merge($arr, flatten($v, $k));
    }
    else{
        $arr[$k] = $v;
    }
}
return $arr;
}

echo '<pre>';
print_r(flatten($result_for_json_all));
echo 'result_for_json_all<pre>';

But get

 Array
 (
[CurrencyAbbreviation] => AUD
[DateOfCurrencyRate] => 2013-12-22
[NumberOfInputRow] => 3
[FinalCurrencyRate] => 
 )

Please, advice what need to correct to get necessary result

Was it helpful?

Solution

<?php
    $result = array();

    foreach ($result_for_json_all as $outer_elt) {
        foreach ($outer_elt as $inner_elt) {
            $result[] = $inner_elt;
        }
    }

    var_dump($result);
?>

OTHER TIPS

Hey try something like this:

<?php
// The original data
$org = Array(
  0 => Array(),
  1 => Array(
    0 => Array( "CurrencyAbbreviation" => "AUD" )
  ),
  2 => Array(
    0 => Array( "CurrencyAbbreviation" => "CAD", "DateOfCurrencyRate" => "2013-12-22"),
    1 => Array( "NumberOfInputRow" => 2 )
  )
);
print_r($org);

// The new array transformed
$arr = Array();
foreach ($org as $v1){
  foreach($v1 as $v2){
    $arr[] = $v2; 
  }
}
print_r($arr);
?>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top