Попытка поместить несколько данных в массиве php / json - PullRequest
3 голосов
/ 24 января 2012

Это, вероятно, довольно просто сделать ... но я просто не могу придумать, как это сделать.

У меня есть сценарий загрузки фотографий, я хочу вернуть два типа данных в массиве,сейчас у меня есть только один набор данных для возвращенной фотографии.

сейчас я делаю это:

 $photos = array();

 ///Script for photo upload etc.
 array_push($photos, $newPhotoToAdd)

 //then when it's finished uploading each photo i do json_encode:
 print json_encode($photos);

все это прекрасно работает, однако теперь я хочу вернуть другой наборданные с каждой фотографией.

Мне нужно сделать что-то вроде:

 array_push($photos, ['photoID'] = $photoID, ['photoSource'] = $newPhotoToAdd)

Ответы [ 3 ]

4 голосов
/ 24 января 2012

Исходный вопрос

Вы можете просто вставить массив вместо newPhotoToAdd, как показано ниже:

$photos = array();
// perform upload
$photos[] = array(
    'photoID' => $photoID,
    'photoSource' => $newPhotoToAdd
);
print json_encode($photos);

Вы заметите, что я поменял местами array_push() DOCs для массива добавляет синтаксис [] DOCs , поскольку это проще и с меньшими издержками:

Примечание: Если вы используете array_push () для добавления одного элемента в массив, лучше использовать $ array [] =, потому что в этом случае нет необходимости вызывать функцию.

Из комментариев: распечатка в JavaScript

Вы имеете дело с массивом объектов, поэтому вам нужно зациклить их:

for(var i in json) {
    alert(json[i].photoID);
}
0 голосов
/ 24 января 2012

сделать что-то вроде:

$photos = array();
array_push($photos, array('photoID'=>$photoID,'photoSource'=>$newPhotoToAdd));

foreach ($photos as $photo) {
print json_encode($photo);
}
0 голосов
/ 24 января 2012

Вы хотите создать массив следующим образом:

$photo = array('photoID' => $photoID, 'photoSource' => $newPhotoToAdd);

Затем вы хотите сделать push, как вы делали раньше с этим новым массивом:

array_push($photos, $photo);
...