Эффективный способ поиска индекса с 2 критериями в многомерном массиве в php - PullRequest
1 голос
/ 01 мая 2020

Мне нужно найти индекс многомерного массива по двум значениям, одно из значений повторяется несколько раз, так как это список штатов и городов, вот пример

array(
        99773000 => array('State' => 'ANTIOQUIA', 'City' => 'CUMARIBO'),
        99624000 => array('State' => 'ANTIOQUIA', 'City' => 'SANTA ROSALIA'),
        99524000 => array('State' => 'VICHADA', 'City' => 'LA PRIMAVERA'),
        99001000 => array('State' => 'VICHADA', 'City' => 'PUERTO CARREÑO'),
        .....
        xxxxxxxx => array('State') => etc......
);

Теперь я получить в функции штат и город, и мне нужно вернуть индекс, вот как я делаю это прямо сейчас:

        foreach ( $array as $index => $state_and_city ) {

            $current_state = $state_and_city['State'];

            $current_city = $state_and_city['City'];

            if( $current_state == $state  && $current_city == $city) {
                return $index;
            }
        }

        return '';

Я хотел бы знать, есть ли более эффективный подход для этого?

1 Ответ

0 голосов
/ 01 мая 2020

Здесь вам просто нужно получить ключи из внутреннего массива, чего можно добиться с помощью функции array_search.

 foreach ($array as $index => $state_and_city ) {

            $current_state = $state_and_city['State'];

            $current_city = $state_and_city['City'];

           $state_key = array_search($current_state,$index);
           $city_key = array_search($current_city,$index);


            if($state_key == $state  && $city_key == $city) {
                return $index;
            }
        }

        return '';
...