usort()PHP的多维数组

时间:2015-06-30 04:54:03

标签: php arrays facebook-graph-api multidimensional-array

这是我的数组:http://2of1.com/zee/ZEES%20SMS%20SERVICE.html此数组包含2个数组源。

来自Debe Waisman Casting的Central Casting和Posts的帖子。

现在我首先获得所有中心演员职位。然后是Debe Waisman Casting的帖子。像这样...

中央铸造岗位 中央铸造岗位 中央铸造岗位 中央铸造岗位 中央铸造岗位

Debe Waisman铸造帖子

Debe Waisman铸造帖子 Debe Waisman铸造帖子 Debe Waisman铸造帖子 Debe Waisman铸造帖子 我想通过$ updated_time对这些帖子进行排序,以便使用usort()将最新帖子发布在顶部,但我不知道如何使用此功能。

这就是我从数组中获取数据的方式:

        $response = $request->execute();
        $graphObject = $response->getGraphObject()->AsArray();

        foreach ($graphObject as $keyEntry => $entry){

            foreach( $entry->data as $data ) {
                $string = $data->message;
                $pic = $data->picture;
                $post_id = $data->id;
                $page_name = $data->from->name;
                $time_posted = $data->created_time;
                $updated_time = $data->updated_time;
                $unixtime = strtotime($time_posted);
                $unixtime2 = strtotime($updated_time);


                foreach( $data->actions as $action ) {
                   $link = $action->link;
                  }

                echo '<div class='posts'>$string</div>';
             }
        }

1 个答案:

答案 0 :(得分:0)

首先我会解决这个问题

echo '<div class='posts'>$string</div>'; 

所以就是这样

echo "<div class='posts'>$string</div>"; 

或者这样

echo '<div class="posts">'.$string.'</div>';

你想要实际创建一个可以应用usort的数据数组,所以在你的循环中做这样的事情

$row['updated_time'] =  $data->updated_time;
$rows[] = $row;

然后当你有一个像这样的数组

 array(
   array( 'updated_time'=>126154655,... ),
   array(...)
)

你可以像这样使用usort

 usort( $array, function($a,$b){
      return $a['updated_time'] < $b['updated_time'] ? -1 : 1;
}

这样的事情

$rows = array();
foreach ($graphObject as $keyEntry => $entry){
    $row = array();
    foreach( $entry->data as $data ) {
        $row['string'] = $data->message;
        $row['pic'] = $data->picture;
        $row['post_id'] = $data->id;
        $row['page_name'] = $data->from->name;
        $row['time_posted'] = $data->created_time;
        $row['updated_time'] = $data->updated_time;
        $row['unixtime'] = strtotime($time_posted);
        $row['unixtime2'] = strtotime($updated_time);
        $row['links'] = array();

        foreach( $data->actions as $action ) {
             $row['links'][] = $action->link;
        }

         $rows[] = $row;
    }
}

usort( $rows, function($a,$b){
     return $a['updated_time'] < $b['updated_time'] ? -1 : 1;
}

否则所有这些变量在下一个循环中消失,你无法在没有数据的情况下对数据进行排序。

更新:由于$ data用于您的对象foreach($entry->data as $data ),您将需要使用$ rows或其他内容作为顶级数组。