2010-11-02 92 views
1

我有3個JSON字符串與POST進來,並希望將它們合併到一個2維數組中,並以JSON格式保存到數據庫中。 對於這個例子,我有圖片的URL,ALT描述和布爾isfavoritePHP將數組合併到2D JSON中

$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); 
+0

你想要的三個陣列是在陣列之前清理數字索引......吧?並且你想將JSON保存在數據庫中,對嗎? – Gordon 2010-11-02 14:08:27

+0

是的,沒錯。 – FFish 2010-11-02 14:09:56

回答

1

只是字符串串連:

$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字符串值正常工作,你不需要任何連接/解碼。 您可以使用http://www.jsonlint.com/來驗證它(刪除jsonlint和print_rdumps,使一些空間

+0

mmm,是的,我認爲是這樣..是這個有​​效的JSON?我的意思是我可以json_decode()我需要能夠訪問例如'alt for second image'等。 – FFish 2010-11-02 14:15:23

+0

我剛剛嘗試echo print_r(json_decode($ to_db));但它返回1?難道這不是更好的[[「001.jpg」,「descr 1」,false],[「002.jpg」,「descr 2」,true]] – FFish 2010-11-02 14:22:22

+0

@FFish我不知道我明白你是什麼問。它是有效的(在我添加了缺失的逗號之後),並且如果您想將Json字符串推送到數據庫,那麼這應該是首選的方式,因爲解碼它是昂貴的。 – Gordon 2010-11-02 14:24:08

0

最簡單的一點:

$img_arr = array(); 

for ($i=0; $i < sizeof($url_arr); $i++) { 
    $img_arr[] = array($url_arr[$i], $alt_arr[$i], $isFav_arr[$i]); 
} 

保存到數據庫取決於你使用的數據庫類型。查看使用mysql_queryprepared statements(首選)的示例。

+0

謝謝你,簡單比我容易... – FFish 2010-11-02 14:10:57

+0

逃跑如果你看到一個for循環sizeof!預先計算好的長陣列長度 – nerkn 2010-11-02 14:39:18

1

$ url_arr = json_decode(「[ 」http://site.com/001.jpg「,」HTTP:/ /site.com/003.jpg","http://site.com/002.jpg「]'); $ alt_arr = json_decode('[「測試int charsàèéìòóùstop」,「second description」,「」]'); // UTF-8支持 $ isFav_arr = json_decode('[「true」,「false」,「false」]'); //串需要轉換到布爾值

$ img_arr =陣列( 「網址」=> $ url_arr, 「ALTS」=> $ alts_arr, 「的收藏」=> $ isFav_arr
); $ results = json_encode($ img_arr);

//可能你需要構建multydim陣列

+0

這也是一個很好的答案,但戈登的解決方案保存了json編碼,就像我的例子中我已經編碼了它們一樣。乾杯 – FFish 2010-11-02 17:05:31