PHP – Array flattern function

Łukasz Piotrowski Komentarzy 0

    Hej.

    Dziś na własne potrzeby musiałem stworzyć funkcję w PHP która z wielowymiarowej tablicy wyciągnie mi wszystkie tablice z wartościami i przeniesie je na zerowy poziom.
    Brzmi dziwnie ale przykład może wyjaśni. Zapraszam


    Funkcja

    Najpierw sama funkcja

    function array_flatten($array, &$values)
    {
        if(empty($values))
            $values = [];
    
        $nonArrayValues = array();
        foreach ($array as $key => $value)
        {
            if(!is_array($value))
            {
                $nonArrayValues[$key] = $value;
            }
            else
            {
                $values[$key] = array_flatten($value, $values);
            }
        }
        return $nonArrayValues;
    }

    Przykład użycia

    $arrayValues = [
        'val3.1' => 'valsss',
        'val3.2',
        'val3' => [
            'val3.1' => 'valsss',
            'val3.2',
            'val3.3' => [
                'val4.1',
                'val4' => ['vall'],
            ]
        ],
    ];
    
    $free = array_flatten($arrayValues, $newArrayValues);
    echo '<pre>'; print_r($newArrayValues); print_r($free); echo'</pre>';
    
    
    /*
    Array
    (
        [val4] => Array
        (
            [0] => vall
        )
        [val3.3] => Array
        (
            [0] => val4.1
        )
        [val3] => Array
        (
            [val3.1] => valsss
            [0] => val3.2
        )
    )
    Array
    (
        [val3.1] => valsss
        [0] => val3.2
    )
    */

    Wyjaśnienie

    Funkcja korzysta z rekurencji do wyciągania tablic z wartościami i umieszcza je w innej tablicy.
    array_flatten($arrayValues, $newArrayValues) przyjmuje 2 parametry:
    – Tablica z wartościami
    – Tablica wynikowa

    Dodatkowo sama funkcja zwraca tablicę wartości które mogły się znaleźć bezpośrednio w tablicy danych.

    Top