Pages

02 December, 2020

Multidimensional array searching to return key if value found

<?


Multidimensional array searching to return key if value found

I need to pass in a name to a search function on an array
If then name is found I need to return the key associated with the value.

this was my first pass, with an array and it works

$radioreps = [
    '7' => 'Larry',
    '8' => 'Kelly',
    '9' => 'Dave',
    '10' => 'Dana',
    '11' => 'Silver',
    '12' => 'Lueth',
    '17' => 'Mike',
    '34' => 'Ennen',
];

if(in_array($username$radioreps)) {
    $key = array_search($username$radioreps);
    return $key;
}

return false;

although the value being passed in might be a first or last name, so i needed to associate multiple names to one key.

like so:

$radioreps = array(
    '7' => array('Larry''Fredrickson'),
    '8' => array('Kelly''Steve'),
    '9' => array('Dave''David''Burns'),
    '10' => array('Dana''Burress'),
    '11' => array('Silver''Marsha'),
    '12' => array('Elaine''Lueth'),
    '17' => array('Mike''Haile'),
    '34' => 'Ennen',
);

foreach($radioreps as $rep){
    if(($strict ? $rep === $username : $rep == $username) || (is_array($rep) && in_array($username$rep$strict))) {
        $key = array_keys($rep);
        dd($key);
        return $key;
    }
}
return false;

not sure i'm doing this right though. but i want my end results to be if Fredrickson is passed in, then the key 7 should be returned, and so on.



............You Can Try This Trick----------

this did the trick

$radioreps = [
            ['id' => 7, 'name' => 'Larry'],
            ['id' => 7, 'name' => 'Fredrickson'],
            ['id' => 8, 'name' => 'Steve'],
            ['id' => 8, 'name' => 'Kelly'],
            ['id' => 9, 'name' => 'Dave'],
            ['id' => 9, 'name' => 'David'],
            ['id' => 9, 'name' => 'Burns'],
            ['id' => 10, 'name' => 'Burress'],
            ['id' => 10, 'name' => 'Dana'],
            ['id' => 11, 'name' => 'Marsha'],
            ['id' => 11, 'name' => 'Silver'],
            ['id' => 12, 'name' => 'Elaine'],
            ['id' => 12, 'name' => 'Lueth'],
            ['id' => 17, 'name' => 'Mike'],
            ['id' => 17, 'name' => 'Haile'],
            ['id' => 34, 'name' => 'Ennen'],
        ];


        foreach($radioreps as $key => $rep)
        {
            if (in_array($username, $rep)) {
                echo "Found {$rep['id']} for {$username}" . PHP_EOL;
                return $rep['id'];
            }
        }
        return false;

No comments:

Post a Comment

Thanks