有人可以帮助我吗...我已经读过以前的PHP'排序'问题......并尝试遵循逻辑......但是大脑褪色占上风; - !
我有一个json对象(来自facebook),我试图使用以下代码之一使用其中一个值('created_time')进行排序:
$json = file_get_contents($url,0,null,null);
$result = json_decode($json, true);
array_multisort($note['created_time'], SORT_ASC, $result); /* what's wrong with this line?? */
示例json数据如下所示:
{
"data": [
{
"id": "123",
"from": {
"name": "Example",
"category": "Musician/band",
"id": "123"
},
"subject": "Subject 1",
"message": "Example message text 1",
"created_time": "2011-07-12T20:18:17+0000",
},
{
"id": "123",
"from": {
"name": "Example",
"category": "Musician/band",
"id": "123"
},
"subject": "Subject 2",
"message": "Example message text 2",
"created_time": "2011-07-12T20:21:01+0000",
},
...
谢谢你的帮助。
答案 0 :(得分:2)
你的PHP片段引用了$ note对象,但我只看到了$ json和$ result变量......
假设我们有数据数组可用,你可以使用自定义函数的usort ..如果你使用PHP 5.3 +
这可能是一个匿名函数function sort_by_creation($a, $b)
{
return (strtotime($a['created_time']) < strtotime($b['created_time']) ? -1 : 1;
}
usort($data, 'sort_by_creation');
答案 1 :(得分:0)
我不确定这是否有效。 $ note来自哪里?如果您尝试按特定成员对数组进行排序,那么usort呢? http://php.net/manual/en/function.usort.php
如下所示:
function sortByCreatedTime($a, $b){
if ($strtotime($a['data']['created_time']) == strtotime($b['data']['created_time'])) {
return 0;
};
return ($strtotime($a['data']['created_time']) < strtotime($b['data']['created_time'])) ? -1 : 1;
};
usort($result, sortByCreatedTime);
for($i = 0; $i < count($results['data']); $i++){
//should output in descending order. if not just change
//the < to a > in the sort function above
echo 'time is => ' . $results['data']['created_time'] . '<br>';
};