4

I am Having an mutidimensional array getting result like given below

Array
(
    [0] => Array
        (
            [0] => 70
        )

    [1] => Array
        (
            [0] => 67
        )

    [2] => Array
        (
            [0] => 75
            [1] => 73
            [2] => 68
        )

    [3] => Array
        (
            [0] => 68
        )

    [4] => Array
        (
            [0] => 76
        )

)

But I need to convert it to single array

And I want to convert in to single dimensional array as

Array
(
[0] => 70
[1] => 67
[2] => 75
[3] => 73
[4] => 68
[5] => 68
[6] => 76
)

How to convert it using php functions?

Or Is there any other way to do it?

1

6 Answers 6

15

You can try

$it =  new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
$l = iterator_to_array($it, false);

var_dump($l); // one Dimensional 
Sign up to request clarification or add additional context in comments.

1 Comment

And Also we Can Add sort($l); $l = array_unique($l); for removing duplicate elements and for proper indexing for new array
2

Try with:

$input  = array(/* your array*/);
$output = array();

foreach ( $input as $data ) {
  $output = array_merge($output, $data);
}

1 Comment

Just use $final instead of $input.
1

You can use array_walk_recursive() for that coupled with a closure:

$res = array(); // initialize result

// apply closure to all items in $data
array_walk_recursive($data, function($item) use (&$res) {
    // flatten the array
    $res[] = $item;
});

print_r($res); // print one-dimensional array

Comments

0

This should do the trick

$final = array();
foreach ($outer as $inner) {
  $final = array_merge($final, $inner);
}
var_dump($final);

Or you could use array_reduce() if you have PHP >= 5.3

$final = array_reduce($outer, function($_, $inner){
  return $_ = array_merge((array)$_, $inner);
});
var_dump($final);

Comments

0

For a more generic function which can deal with multidimensional arrays, check this function,

function  arrayFlattener($input = array(), &$output = array()) {
  foreach($input as $value) {
    if(is_array($value)) {
        arrayFlattener($value, $output);
    } else {
        $output[] = $value;
    }
  }
}

You can find an example here.

Comments

0

By using this function you can convert any dimension array into a single dimention array.

$result = array();
$data = mearchIntoarray($result,$array);
function mearchIntoarray($result,$now)
{
    global $result;
    foreach($now as $key=>$val)
    {
        if(is_array($val))
        {
            mearchIntoarray($result,$val);
        }
        else
        {
            $result[] = $val;
        }
    }
    return $result;
} 

Where $array is your given array value.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.