Search code examples
phparrays

How to reindex an array after extracted from a larger array?


I have this array:

I have this array.

There are many ['variants'] below.

I need to create a new array like this:

new array like this

from all ['variants'].

I have a function with this

$variants = array();
$features = $features['18']; foreach ($features as $feature) {
    if (!empty($feature['variants'])) {
        $variants = array_merge($variants, $feature['variants']);
    }
}
    fn_print_r($variants);
return $variants;

But it have error: array_merge() [function.array-merge]: Argument #2 is not an array.

How can I fix this?


Solution

  • If you code correct - rewrite line 3:

    if (!empty($feature['variants'])) {
    

    on:

    if (!empty($feature['variants']) && is_array($feature['variants'])) {
    

    And I would give the call to array_values. For example:

    foreach($features as $feature)
    {
        $result = [];
        if(isset($feature['variants']) && is_array($feature['variants']))
        {
            $result = array_merge($result, array_values($feature['variants']));
        }
    }