#php #search #multidimensional-array
#php #Поиск #многомерный массив
Вопрос:
Я начинающий PHP, поэтому, пожалуйста, будьте терпеливы со мной. Я потратил пару часов, просматривая множество потоков, уже посвященных поиску в многомерных массивах, но ни один из них не подходит для моей ситуации. Звучит действительно просто, но отчасти застряло, поскольку я хочу выполнять поиск по имени ключа и извлекать значения по нему.
Пробовал некоторые методы, такие как array_column, но возвращает пустой массив. Я просто хочу перебрать массив, найдя имя ключа как: «largeImageURL» из всех элементов массива, и хочу вернуть его значения.
{
"total": 4692,
"totalHits": 500,
"hits": [
{
"id": 195893,
"pageURL": "https://pixabay.com/en/blossom-bloom-flower-195893/",
"type": "photo",
"tags": "blossom, bloom, flower",
"previewURL": "https://cdn.pixabay.com/photo/2013/10/15/09/12/flower-195893_150.jpg"
"previewWidth": 150,
"previewHeight": 84,
"webformatURL": "https://pixabay.com/get/35bbf209e13e39d2_640.jpg",
"webformatWidth": 640,
"webformatHeight": 360,
"largeImageURL": "https://pixabay.com/get/ed6a99fd0a76647_1280.jpg",
"fullHDURL": "https://pixabay.com/get/ed6a9369fd0a76647_1920.jpg",
"imageURL": "https://pixabay.com/get/ed6a9364a9fd0a76647.jpg",
"imageWidth": 4000,
"imageHeight": 2250,
"imageSize": 4731420,
"views": 7671,
"downloads": 6439,
"favorites": 1,
"likes": 5,
"comments": 2,
"user_id": 48777,
"user": "Josch13",
"userImageURL": "https://cdn.pixabay.com/user/2013/11/05/02-10-23-764_250x250.jpg",
},
{
"id": 73424,
...
},
...
]
}
Комментарии:
1. Итак, что вы уже пробовали? И, пожалуйста, не говорите «некоторые вещи».
2. вы ожидаете сбора значения с соответствующим ключом, верно?
3. @narayansharma91yes точно!
4. За исключением использования … , ваш json недействителен по нескольким пунктам
5. Как вы использовали array_column. На мой взгляд, это будет работать нормально
Ответ №1:
Прежде всего, вам нужно преобразовать ваш объект JSON в массив и сравнить, как показано ниже.
$results = json_decode($your_array);
$match_result = [];
foreach($results['hits'] as $result) {
if (isset($result['largeImageURL']) {
$match_result [] = $result['largeImageURL'];
}
}
print_r($match_result);
Комментарии:
1. Проверьте наличие ключа, есть он там или нет. Хорошо.
Ответ №2:
Вы должны декодировать свой JSON-ответ в массив и перебирать hits
массив, пока не найдете ключ и не вернете данные.
$returnArr = array();//to store values of largeImageURL
$json = "<json response>";//your json string here
$decoded_json = json_decode($json, true);//convert json to an array
//now we will loop through hits
foreach($decoded_json['hits'] as $hit){
$returnArr[] = $hit['largeImageURL'];
}
print_r($returnArr);