Я получаю следующие данные запроса JSON:
data = "{\"photo\":[{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/RqAN2jZ7ScC8eOx6ckUE\",\"filename\":\"IMG_0003.JPG\"},{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/XdwtFsu6RLaoZurZXPug\",\"filename\":\"IMG_0004.JPG\"}]}";
Я хочу сделать массив из приведенных выше данных JSON в следующем формате:
Array
(
[vshare] => Array
(
[IMG_0003.JPG] => Array
(
[0] => https://www.filepicker.io/api/file/RqAN2jZ7ScC8eOx6ckUE
)
[IMG_0004.JPG] => Array
(
[0] => https://www.filepicker.io/api/file/XdwtFsu6RLaoZurZXPug
)
)
)
Фактические данные запроса JSON могут быть огромными по размеру. Для вашей справки я использовал только два таких элемента.
Так может кто-то, пожалуйста, помогите мне в том, чтобы предоставить мне способ эффективного достижения желаемого нового массива?
Заранее спасибо.
Я думаю, что это будет делать то, что вы хотите.
<?php
$data = "{\"photo\":[{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/RqAN2jZ7ScC8eOx6ckUE\",\"filename\":\"IMG_0003.JPG\"},{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/XdwtFsu6RLaoZurZXPug\",\"filename\":\"IMG_0004.JPG\"}]}";
$obj = json_decode($data);
$new_ar = array();
foreach ( $obj->photo as $photo ) {
$new_ar['vshare'][$photo->filename] = array($photo->fileURL);
}
print_r($new_ar);
Должен генерировать
Array
(
[vshare] => Array
(
[IMG_0003.JPG] => Array
(
[0] => https://www.filepicker.io/api/file/RqAN2jZ7ScC8eOx6ckUE
)
[IMG_0004.JPG] => Array
(
[0] => https://www.filepicker.io/api/file/XdwtFsu6RLaoZurZXPug
)
)
)
$ data = json_decode ($ data, true);
ОК ПОПРОБУЙТЕ ЭТОТ ТОГДА:
$data = "{\"photo\":[{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/RqAN2jZ7ScC8eOx6ckUE\",\"filename\":\"IMG_0003.JPG\"},{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/XdwtFsu6RLaoZurZXPug\",\"filename\":\"IMG_0004.JPG\"}]}";
$data = json_decode($data,true);
$NewData = false;
foreach($data['photo'] as $k=>$d){
$NewData['vshare'][$d['filename']][] = $d['fileURL'];
}
var_dump($NewData);