Поиск в многомерном массиве по имени ключа и возвращаемым значениям в качестве результата

#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);