開発メンバー募集中
開発者からテンプレートデザイナーまで募集を致しております。
ご興味のある方は、お問い合わせ下さい。
ID #1061

タグがシャッフルされない

右に表示される "タグ","Tags"が本来はその都度、ランダムに入れ替わる(シャッフルされる)筈なのに固定されたまました。
array_rand()で処理してるのですが、動いてない...

調べたところ、
5.2.10 結果の配列のキーがシャッフルされなくなりました。 
http://www.php.net/manual/ja/function.array-rand.php

 shuffle()関数を使いましたら、思うように ヽ(^◇^*)/ ワーイ

#
####--- Open ------------------------
#

/inc/Utils.php

#
##--- Find ------------------------
# About Line231

    public static function shuffleData($data)
    {
        $shuffled_data = array();
        if (is_array($data)) {
            if (count($data) > 1) {
                $randomized_keys = array_rand($data, count($data));

#
#--- Replace With ------------------------
#

    public static function shuffleData($data)
    {
        $shuffled_data = array();
        if (is_array($data)) {
            if (count($data) > 1) {
                $randomized_keys = array_keys($data);
                shuffle($randomized_keys);


#################################

また、以下のコードの方が単純です

#
###--- OPEN ---------------------
#

/inc/Tags.php

#
## --- Find ---------------------
# About Line108

        $numberOfItems = $limit ? PMF_TAGS_CLOUD_RESULT_SET_SIZE : $this->db->num_rows($result);
        if (isset($allTags) && ($numberOfItems < count($allTags))) {
         $keys = array_keys($allTags);
         for ($n = 0; $n < $numberOfItems; $n++) {
                $valid = false;
                while (!$valid) {
                    $rand = array_rand($keys);
                    if (isset($allTags[$rand])) {
                        $valid       = true;
                        $tags[$rand] = $allTags[$rand];
                        unset($keys[$rand]);
                    }
                }
            }
        } else {
            $tags = PMF_Utils::shuffleData($allTags);
        }

#
##  ---- Replase with -----------------
#

        $numberOfItems = $limit ? PMF_TAGS_CLOUD_RESULT_SET_SIZE : $this->db->num_rows($result);

        if (isset($allTags) && ($numberOfItems < count($allTags))) {
   $keys = array_keys($allTags);
   shuffle($keys);
            foreach($keys as $current_key) {
                $tags[$current_key] = $allTags[$current_key];
            }
   $tags = array_slice($tags,0,$numberOfItems);
        } else {
            $tags = PMF_Utils::shuffleData($allTags);
        }

########################

本家に投稿
http://forum.phpmyfaq.de/viewtopic.php?f=3&t=10403

タグ: タグ, バグ

関連エントリー:



Comments

コメントはまだありません


Add Comment