поиск внутри массивов с условием в php - PullRequest
0 голосов
/ 05 мая 2020

У меня есть api со списком массивов внутри одного массива, и каждый массив внутри этого массива имеет один ключ [атрибуты], а внутри этого ключа один массив с ключом [CITY_NAME]

это мой массив из api этот номер массива равен 0, но каждый день это число меняется, и мои цифры ошибаются, что является хорошим способом всегда иметь цифры моего города с помощью ключа [CITY_NAME]

Я получаю данные с помощью этого код

$json = file_get_contents($url);
$json_data = json_decode($json, true);
$data = $json_data['features'];
$mycity = $data[0]['attributes'];

Array
(
    [0] => Array
        (
            [attributes] => Array
                (
                    [CITY_NAME] => city1
                    [Name] => city1
                    [ADMIN_NAME] => city1
                    [POP_CLASS] => 5,000,000 to10,000,000
                    [Population] => 7676654
                    [Population_Data_Source] => Wikipedia
                    [Population_Data_Date] => 2018
                    [CityID] => 14
                    [Longitude] => 46.7614868685786
                    [Latitude] => 24.7388786516234
                    [Confirmed] => 0
                    [Recovered] => 0
                    [Deaths] => 0
                    [Active] => 0
                    [Tested] => 0
                    [Name_Eng] => city1
                    [Join_Count] => 61
                    [Confirmed_SUM] => 5152
                    [Deaths_SUM] => 9
                    [Recovered_SUM] => 1407
                    [Active_SUM] => 3736
                    [Tested_SUM] => 376607
                    [ObjectId] => 14
                )

        )
 [1] => Array
    (
        [attributes] => Array
            (
                [CITY_NAME] => city2
                [Name] => city2
                [ADMIN_NAME] => city2
                [POP_CLASS] => 1,000,000 to 5,000,000
                [Population] => 1675368
                [Population_Data_Source] => Wikipedia
                [Population_Data_Date] => 2010
                [CityID] => 9
                [Longitude] => 39.8148987363852
                [Latitude] => 21.4273876500039
                [Confirmed] => 0
                [Recovered] => 0
                [Deaths] => 0
                [Active] => 0
                [Tested] => 0
                [Name_Eng] => city2
                [Join_Count] => 59
                [Confirmed_SUM] => 6848
                [Deaths_SUM] => 85
                [Recovered_SUM] => 1145
                [Active_SUM] => 5618
                [Tested_SUM] => 0
                [ObjectId] => 9
            )

    )

1 Ответ

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

Поскольку я мог неправильно понять, а у вас их может быть много, просто создайте новый массив с помощью CITY_NAME:

foreach($data as $values) {
    $result[$values['attributes']['CITY_NAME']] = $values['attributes'];
}

Теперь вы можете получить доступ по CITY_NAME:

echo $result['city1']['Population'];

Это может быть проще. Извлеките все attributes из всех массивов в массив, затем создайте массив из этого, проиндексированного CITY_NAME:

$data = array_column(array_column($json_data['features'], 'attributes'), 
                     null, 'CITY_NAME');
...