2013-05-16 46 views
1

這是應該很容易的一個。我甚至不確定「子集」是否是描述它的正確方法。創建php數組的子集並轉換爲json

我最初的陣列看起來像這樣:

array(3) { [0]=> array(5) { ["id"]=> string(1) "1" ["claim_id"]=> string(1) "1" ["price"]=> string(2) "50" ["date"]=> string(19) "2013-05-15 01:58:48" ["created"]=> string(19) "2013-05-15 01:58:48" } [1]=> array(5) { ["id"]=> string(2) "11" ["claim_id"]=> string(1) "1" ["price"]=> string(2) "45" ["date"]=> string(19) "2013-05-15 03:34:59" ["created"]=> string(19) "2013-05-15 03:37:01" } [2]=> array(5) { ["id"]=> string(2) "25" ["claim_id"]=> string(1) "1" ["price"]=> string(2) "50" ["date"]=> string(19) "2013-05-15 22:47:46" ["created"]=> string(19) "2013-05-15 22:52:02" } } 

我最終喜歡只用日期和價格值結束,交換它們,這樣的日期是第一陣列中,格式化日期,將其轉換爲一個JSON數組,看起來是這樣的:

[{"date":"Mar. 15","price":"50"},{"date":"Mar. 15","price":"45"},{"date":"Mar. 15","price":"50"}] 

我跑了foreach語句來獲得數據並重新格式化日期,然後走到了我的聯賽與剪接,未設置的,和其他函數了我在錯誤的方向。有任何想法嗎?

回答

2

試試這個

$array = array(); 
for($i = 0 ; $i<count($your_array);$i++) { 
    $a=array(); 
    $a['date'] = $your_array[$i]['date']; 
    $a['price'] = date("F .j",strtotime($your_array[$i]["date"])); 
    array_push($array,$a); 
} 

json_encode($array); 

輸出

[{"date":"Mar. 15","price":"50"},{"date":"Mar. 15","price":"45"},{"date":"Mar. 15","price":"50"}] 

Codepad

+0

我收到這條線上的語法錯誤(我不知道爲什麼 - 它看起來正確('t'):'$ a ['date'] = date(「F .j」,strtotime($ your_array [$ i] [「date」]);' – dilettante

+0

@dilettante我忘記了一個關閉''' line.Now固定。 –

+0

Gah。我應該看到這一點。感謝您的支持。這工作出色;謝謝。 – dilettante

0

這應該用正確的forea讓你有

$ret = array(); 
foreach ($source as $rec){ 
    $ret[] = array("date"=>$rec["date"], "price"=>$rec["price"]); 
} 
$json = json_encode($ret); 
0

您需要重建陣列ch和使用json_encode得到JSON

$req_array = array(); 
foreach($youArray as $value) 
{ 
    $temp = array(); 
    $temp['date'] = $value['date']; 
    $temp['price'] = $value['price']; 
    $req_array[]  = $temp; 
} 

$json = json_encode($req_array); 
echo $json; 

看到demo

希望它可以幫助你

0
$infos =array(
      array("id" =>"1","price"=>"50","date"=>"2013-05-15 01:58:48"), 
      array("id" =>"2","price"=>"55","date"=>"2013-06-15 01:58:48") 
     ); 
$i=0; 
foreach ($infos as $info) 
{ 
    $infos[$i]["date"]= date("F .j",strtotime($info["date"])); 
    $i++; 
} 

echo json_encode($infos); 
+0

謝謝。這似乎吐出原始的json編碼數組,但? – dilettante

0

創建一個快捷功能,以創建具有唯一入選的元素的數組:

function datePriceToJson($array) { 
    $a = array(); 
    foreach($array as $i => $a) { 
     $a[] = array("date" => $a['date'], "price" => $a['price']); //Creae a new array based on the one you want 
    } 
    return json_encode($a); 
} 

datePriceToJson($array);