1

这是应该很容易的其中之一。我什至不确定“子集”是否是描述它的正确方式。

我的初始数组如下所示:

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 语句来获取数据并重新格式化日期,然后用 splice、unset 和其他将我带入错误方向的函数脱离了我的联盟。有任何想法吗?

4

5 回答 5

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"}]

键盘

于 2013-05-16T04:15:49.463 回答
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);
于 2013-05-16T04:50:14.300 回答
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;

演示

希望对你有帮助

于 2013-05-16T04:26:21.683 回答
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);
于 2013-05-16T04:26:42.547 回答
0

这应该能让你到达那里

$ret = array();
foreach ($source as $rec){
     $ret[] = array("date"=>$rec["date"], "price"=>$rec["price"]);
}
$json = json_encode($ret);
于 2013-05-16T04:16:13.153 回答