0

並べ替えたい投稿の配列がありますが、並べ替える前に、idの数が最も多い投稿のを見つけたいと思いますlikes

foreach を使用して配列をループします。このために 2 つの foreach ループを実行するのはもったいないように思えますが、事前に最高値を見つけようとするときに代替手段があるかどうかはわかりません。

Array
(
    [0] => Array
        (
            [id] => 162
            [like_count] => 2
            etc.
        )
    [1] => Array
        (
            [id] => 165
            [like_count] => 23
            etc.
        )

)

2 番目の投稿のいいね数が最も多いので、165 の ID が必要です。ループスルーすると、次のようなことができます。

foreach ($posts as $post){
    if($most_liked_id == $post["id"]){
       // this post is the most liked!
    }
}

どんな助けでも大歓迎です-ありがとう!

4

9 に答える 9

1
$highest = 0;
$highest_id = 0;

foreach($array as $a) {

    if($a['like_count'] > $highest) {

        $highest = $a['like_count'];
        $highest_id = $a['id'];
    }
}

私があなたを正しく理解したことを願っています:)

于 2013-06-26T08:05:28.480 に答える
0

これは、データベースから取得したデータのように見えます。その場合ORDER BY like_count DESCは、SQL で句を使用します。

いいね数が最も多い投稿の ID は、$posts[0]['id']他の方法で並べ替える前に表示されます。

于 2013-06-26T08:04:15.960 に答える
0

これを試して:

usort($posts, function($item) { return -$item['like_count']; });
$id = empty($posts) ? null : $posts[0]['id'];

$posts入力配列はどこにありますか。

説明:

  • 最初に、投稿を好きな数で降順で並べ替えます
  • 投稿がある場合はトップの投稿 ID を取得し、それ以外の場合は null を取得します。

このソリューションの良いところは、最初のn件の投稿も選択できることです。

于 2013-06-26T08:08:39.910 に答える
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]
于 2013-06-26T08:08:45.447 に答える
0

関数を使用して、いいねmaxの最高値を取得できます。

        foreach ($posts as $post){
        $max[]=$post['like_count'];
    }

echo max($max['id']);
于 2013-06-26T08:10:02.370 に答える
0

これらのデータは、MySQL などのデータベースから取得されたものですか? そうであれば、最も簡単な解決策は「ORDER BY」を置くことです。

最初の配列と同じキーを保持し、ソートを実行する「like_count」配列を分離することもできます ( http://www.php.net/manual/fr/function.asort.php )。いいね数が最も多いキーを取得します。

于 2013-06-26T08:10:27.623 に答える
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']
    }
于 2013-06-26T08:05:09.137 に答える
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
于 2013-06-26T08:08:00.973 に答える