PHP объединяет массивы в 2D JSON - PullRequest
1 голос
/ 02 ноября 2010

У меня есть 3 строки JSON, поступающие с POST, и я хочу объединить их в двухмерный массив и сохранить в формате 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);

Ответы [ 3 ]

1 голос
/ 02 ноября 2010

Просто конкатенация строк:

$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 dumps , чтобы освободить место )

1 голос
/ 02 ноября 2010

$ url_arr = json_decode ('["http://site.com/001.jpg","http://site.com/003.jpg","http://site.com/002.jpg"]'); $ alt_arr = json_decode ('["testing int chars àèéìòóù stop", "second description", ""]'); // UTF-8 поддерживается $ isFav_arr = json_decode ('["true", "false", "false"]'); // строки должны быть преобразованы в логические значения

$ img_arr = array ( "URL" => $ url_arr, "альты" => $ alts_arr, "Favs" => $ isFav_arr
); $ results = json_encode ($ img_arr);

// возможно, вам нужно очистить числовые индексы ... перед сборкой массива multydim

0 голосов
/ 02 ноября 2010

Простой бит:

$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 или подготовленные операторы (предпочтительно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...