创建php数组的子集并转换为json

时间:2013-05-16 04:11:02

标签: php arrays 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声明来获取数据并重新格式化日期,然后以拼接,未设置和其他功能走出了我的联盟,这让我走错了方向。有什么想法吗?

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这应该可以帮助你

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

答案 2 :(得分:0)

您需要使用正确的foreach重建数组并使用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

希望它可以帮到你

答案 3 :(得分: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);

答案 4 :(得分: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);