我有一系列我想要排序的帖子 - 但在此之前,我想找到帖子id
,其中likes
的数量最多。
我使用foreach遍历数组。虽然为此做两个foreach循环似乎是浪费 - 我不知道在尝试事先找到最高值时是否有其他选择?
Array
(
[0] => Array
(
[id] => 162
[like_count] => 2
etc.
)
[1] => Array
(
[id] => 165
[like_count] => 23
etc.
)
)
所以第二篇帖子的喜欢量最多,所以我需要165的ID - 然后当我循环播放时我可以做类似的事情
foreach ($posts as $post){
if($most_liked_id == $post["id"]){
// this post is the most liked!
}
}
非常感谢任何帮助 - 谢谢!
答案 0 :(得分:1)
$highest = 0;
$highest_id = 0;
foreach($array as $a) {
if($a['like_count'] > $highest) {
$highest = $a['like_count'];
$highest_id = $a['id'];
}
}
希望我理解正确:)
答案 1 :(得分:0)
这看起来像是从数据库中检索的数据。如果是这样,请使用SQL中的ORDER BY like_count DESC
子句。
在您按其他方法排序之前,最喜欢的帖子的ID将为$posts[0]['id']
。
答案 2 :(得分:0)
非常简单的任务,你循环你的帖子。
function get_max_like_post($posts) {
$max_like = 0;
$max_like_post = array();
foreach ($posts as $post) {
if ($post['like_count'] > $max_like) {
$max_like = $post['like_count'];
$max_like_post = $post;
}
}
return $max_like_post['id']
}
答案 3 :(得分:0)
您可以使用usort
。
$posts = array(
array('id' => 161, 'like_count' => 0),
array('id' => 162, 'like_count' => 6),
array('id' => 4, 'like_count' => 2),
);
function like_sort($a, $b) {
if ($a['like_count'] == $b['like_count']) {
return 0;
}
return ($a['like_count'] > $b['like_count']) ? -1 : 1;
}
usort($posts, 'like_sort');
// The first element in the array is now the one with the highest like_count.
echo $posts[0]['id']; // 162
答案 4 :(得分:0)
试试这个:
usort($posts, function($item) { return -$item['like_count']; });
$id = empty($posts) ? null : $posts[0]['id'];
其中$posts
是输入数组。
说明:
此解决方案的优点在于您还可以选择第一个 n 帖子。
答案 5 :(得分:0)
$highest_post_likes = 0;
$highest_post_id = 0;
for($i = 0; $i < sizeof($posts); $i++) {
if ( $posts[$i][like_count] > $highest_post_likes ) {
$highest_post_likes = $posts[$i][like_count];
$highest_post_id = $i;
}
}
// now you can use $posts[$highest_post_id]
答案 6 :(得分:0)
您可以使用max
功能获取最高价值的内容:
foreach ($posts as $post){
$max[]=$post['like_count'];
}
echo max($max['id']);
答案 7 :(得分:0)
这些数据来自像MySQL这样的数据库吗?如果是,最简单的解决方案是放置“ORDER BY”。
您还可以将'like_count'数组分开,保持与第一个数组相同的键并执行asort(http://www.php.net/manual/fr/function.asort.php)。你将拥有最高的钥匙数。
答案 8 :(得分:0)
您可以根据like_count
按降序对数组进行排序,然后为第一个数组元素选取id
。