ホームページ > バックエンド開発 > PHPチュートリアル > PHPでforeach配列内の順序を制御するにはどうすればよいですか?

PHPでforeach配列内の順序を制御するにはどうすればよいですか?

WBOY
リリース: 2016-06-23 14:05:00
オリジナル
940 人が閲覧しました

<?php         /*查询关键字5个宝贝,按照热销降序排列*/         $items = $itemManager->queryByKeyword(" ","hotsell",5);         foreach($items as $i=>$item){              echo "宝贝标题:". $item->title;         }    ?>
ログイン後にコピー


これは、キーワードに基づいて商品をクエリするためのタオバオのインターフェイスです。foreach の結果は 5 つの商品のタイトルです。
たとえば、foreach からの商品の順序は

1 2 3 4 5

次に、それぞれ foreach します。 、対応する赤ちゃんの順序は次のとおりです:
5 1 2 3 4

foreach を続けると、対応する赤ちゃんの順序は次のようになります:

4 5 1 2 3

foreach を続けると、対応する赤ちゃんの順序は次のようになります:

3 4 5 1 2

前回の foreach 、対応する赤ちゃんシーケンスは次のとおりです:

2 3 4 5 1


これは次のように実装できますか?


ディスカッションへの返信 (解決策)

list( を使用できると思います)最初に配列を並べ替えてから foreach

foreach に対して同じプログラムを再度使用していますか?

同じプログラムで foreach を実行していますか?

この質問はもう少し拡張する必要があると思います:
訪問時に同じブラウザが複数の foreach を実行していますか、それとも同じ php にアクセスしている別の閲覧者が foreach が異なる順序を取得することを期待していますか?
後者の方が面倒です

2階のxuzuningさんからの返信を引用: 各foreachで同じプログラムに入っていますか?

この質問はもう少し拡張する必要があると思います:
訪問時に同じブラウザが複数の foreach を実行していますか、それとも同じ php にアクセスしている別の閲覧者が foreach が異なる順序を取得することを期待していますか?
後者の方が面倒です

同じ人が訪問すると、複数の foreach が実行されます。 コードは次のようになります。

$items = $itemManager->queryByKeyword(" ","hotsell",5);         foreach($items as $i=>$item){              echo 出来的标题顺序是 :1 2 3 4 5          }		 		 foreach($items as $i=>$item){              echo 出来的标题顺序是 :5 1 2 3 4         }		 		 foreach($items as $i=>$item){              echo 出来的标题顺序是 :4 5 1 2 3         }		 		 foreach($items as $i=>$item){              echo 出来的标题顺序是 :3 4 5 1 2         }		 		 foreach($items as $i=>$item){              echo 出来的标题顺序是 :2 3 4 5 1         }
ログイン後にコピー


最終的な効果は、同じページ上でタイトルがこのように並べ替えられることです
1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1

この質問は拡張する必要があると思います:
同じ訪問者が来たときに複数の foreach を実行する必要がありますかそれとも、異なる訪問者が同じ php を訪問し、foreach が異なる順序を取得することを期待していることを意味しますか?
後者の方が面倒ですよね?
同じプログラム内で複数回アクセスされる場合は、前に foreach を実行してください
$items[] = array_shift($items);
毎回アクセスされる場合は、
$n = microtime(1) % count($ items );
for($i<$n; $i++) $items[] = array_shift($items);


私がそのように答えたのは、彼が自分のニーズを満たしていなかったからです。クリア !

3 階の snmr_com からの返信を引用します: この質問はさらに拡張する必要があると思います:

同じブラウザーが訪問時に複数の foreach を実行していますか、それとも同じ php にアクセスしている別の閲覧者が foreach が異なる順序を取得することを期待していますか?
後者の方が面倒ですよね?
同じプログラム内で複数回アクセスされる場合は、前に foreach を実行してください
$items[] = array_shift($items);

毎回アクセスされる場合は、
$n =...

モデレーター、これが必要です私は理解できません どういう意味ですか?

$items[] = array_shift($items);

私も彼のニーズを理解していませんでした。ただ、人々が異なる商品を異なる順序で表示したいのではないかと思いました。特定の商品が常に同じ順序でランク付けされるのは避けたいのですが、ランダムな順序を使用したくありません?? 私は何年も前にそのような要求を持った顧客に会いました

すごいです

手に取ってみればわかります。

私は彼のニーズを理解していませんでした。私は彼が、特定の製品が常に 1 位にランクされるのを避けるために、異なる製品を使用する人には異なる順序を設定することを期待しているのではないかと考えましたが、ランダムな順序も使用したくないのではないかと思いました。 N年前にそのような顧客がいて、そのような要求がありました


実際、私の要求はそれほど複雑ではありません。同じ赤ちゃんがページ上で異なる順序で配置されている限り、異なる人々を考慮する必要はありません。は、訪問者全員が同じコンテンツを見ることになります

rree

このような効果を得たいのですが、foreach を 5 回行う必要がありますが、foreach 後に順序を変更することはできません。 ul 内の項目の順序は毎回異なります

PHP code?123456789101112$items = array(1,2,3,4,5); echo $v;echo '< ;br>'; $items[] = array_shift($items); foreach($items as $v) echo $v;echo '
' = array_s……



やってみます

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート