У меня есть 3 строки JSON, которые входят в POST и хотят объединить их в 2-мерный массив и сохранить в формате JSON базу данных. В этом примере у меня есть URL-адрес изображения, описания альфа и логические значения isfavorite
$url_arr = json_decode('["http://site.com/001.jpg","http://site.com/003.jpg","http://site.com/002.jpg"]'); $alt_arr = json_decode('["testing internat chars àèéìòóù stop","second description",""]'); // UTF-8 supported $isFav_arr = json_decode('["true", "false", "false"]'); // strings need to be converted to booleans // merge into 2 dimensional array // $img_arr = array_merge($url_arr, $alt_arr, $isFav_arr); // doesn't work, just add's to the end // ... // save 2D JSON in database $to_db = json_encode($img_arr);
Просто конкатенация строки:
$to_db = '[' . '["http://site.com/001.jpg","http://site.com/003.jpg","http://site.com/002.jpg"]' . ',["testing int chars àèéìòóù stop","second description",""]' . ',["true", "false", "false"]' . ']';
Если вы не хотите работать со значениями в строке Json, вам не требуется en / decoding. Вы можете использовать http://www.jsonlint.com/ для его проверки ( удалены jsonlint и print_r
чтобы сделать некоторое пространство )
$ url_arr = json_decode ('["http://site.com/001.jpg", "http://site.com/003.jpg", "http://site.com/002.jpg"%5D' ); $ alt_arr = json_decode ('["тестирование int chars àèéìòóù stop", "второе описание", ""]'); // UTF-8 поддерживает $ isFav_arr = json_decode ('["true", "false", "false"]'); // строки должны быть преобразованы в булевы
$ img_arr = array ("urls" => $ url_arr, "alts" => $ alts_arr, "favs" => $ isFav_arr
); $ results = json_encode ($ img_arr);
// возможно, вам нужно будет очистить числовые индексы … перед построением массива multydim
Легкий бит:
$img_arr = array(); for ($i=0; $i < sizeof($url_arr); $i++) { $img_arr[] = array($url_arr[$i], $alt_arr[$i], $isFav_arr[$i]); }
Сохранение в БД зависит от того, какой тип БД вы используете. Посмотрите примеры, используя либо mysql_query
, либо подготовленные операторы (предпочтительные).