Сreate一个大数组,然后它排序,然后我应该得到例如排序数组的前n个元素。
创建数组:
foreach ($array_RESPONSEdata as $key => $row) {
$new_created_time[$key] = $row['DATE_PIC'];
$new_thumbnail[$key] = $row['LINK_PIC'];
$new_tags_name [$key] = $row['TAG_PIC'];
}
在 get 数组的输出中,如下所示:
Array (
[0] => Array ( [DATE_PIC] => 1376566005 [LINK_PIC] => http://distilleryimage3.s3.amazonaws.com/90ebfcc2059d11e381c522000a9e035f_5.jpg [TAG_PIC] => test )
[1] => Array ( [DATE_PIC] => 1376222415 [LINK_PIC] => http://distilleryimage9.s3.amazonaws.com/957a78a4027d11e3a72522000a1fb586_5.jpg [TAG_PIC] => test )
[2] => Array ( [DATE_PIC] => 1374685904 [LINK_PIC] => http://distilleryimage2.s3.amazonaws.com/1dbe356ef48411e2931722000a1fc67c_5.jpg [TAG_PIC] => test )
[3] => Array ( [DATE_PIC] => 1373909177 [LINK_PIC] => http://distilleryimage0.s3.amazonaws.com/0fd9b22adce711e2a7ab22000a1f97eb_5.jpg [TAG_PIC] => test )
[4] => Array ( [DATE_PIC] => 1372089573 [LINK_PIC] => http://distilleryimage0.s3.amazonaws.com/0fd9b22adce711e2a7ab22000a1f97eb_5.jpg [TAG_PIC] => test )
[5] => Array ( [DATE_PIC] => 1371468982 [LINK_PIC] => http://distilleryimage0.s3.amazonaws.com/0fd9b22adce711e2a7ab22000a1f97eb_5.jpg [TAG_PIC] => test )
)
接下来,按键DATE_PIC对数组进行排序:
array_multisort($new_created_time, SORT_DESC, $array_RESPONSEdata);
获取具有反向排序的数组。
问:现在如何像排序后一样,前三行输出?
实际上,
您不需要首先分离数组,如果它适合您的应用程序,这将节省一些内存:
<?php
// Will sort using 'DATE_PIC' as index.
array_multisort( $array_RESPONSEdata, SORT_ASC );
// We'll define a buffer, so PHP doesn't need to echo every time (list-style).
$buffer = array();
/**
* You mentioned 'get the first n elements', to specify how many
* rows you want to get, you can specify the max count in a for loop
* array_multisort reassigns numeric index keys in order after sorting.
*
* e.g. If we want 5 records to count:
* $max = 5;
*
* If you want all that is returned you can do this:
* $max = count( $array_RESPONSEdata );
*/
$max = 5;
for( $n = 0; $n < $max; $n++ )
{
$buffer[] = '<ul>';
$buffer[] = '<li>' . $array_RESPONSEdata[$n]['TAG_PIC'] . '</li>';
$buffer[] = '<li>' . $array_RESPONSEdata[$n]['DATE_PIC'] . '</li>';
$buffer[] = '<li><img src="' . $array_RESPONSEdata[$n]['LINK_PIC'] . '" alt="' . $array_RESPONSEdata[$n]['TAG_PIC'] . '"/>';
$buffer[] = '</ul>';
}
// And now the output magic (Not really):
echo implode( "'r'n", $buffer );
?>
当然,根据需要构建您的 HTML,这只是示例。顺便说一下,作为参考,我使用 "'r'n"
将我的缓冲区拼接在一起,因为源打印在单独的行上,因此很容易看到源中用于 html/css 调整的情况。