Search code examples
phparraysmultidimensional-arrayfilter

Find the first row with a qualifying column value in a multidimensional array


How I can search by value of key [sub1] in multi-dimensional array and display impressions and earnings from there. Array rows can have unlimited of countries.

Array
(
    [rows] => Array
        (
            [0] => Array
                (
                    [sub1] => Spain
                    [impressions] => 1022
                    [earnings] => 0.13
                )

            [1] => Array
                (
                    [sub1] => Germany
                    [impressions] => 801
                    [earnings] => 0.01
                )

            [2] => Array
                (
                    [sub1] => Italy
                    [impressions] => 684
                    [earnings] => 0.35
                )
        )       
)

Solution

  • If sub1 is unique, then just re-index by that and then it's easy to access using the country:

    $lookup = array_column($array['rows'], null, 'sub1');
    echo $lookup['Italy']['impressions'];
    

    Maybe test for a valid country first:

    if(isset($lookup['Italy'])) {
        echo $lookup['Italy']['impressions'];
    }