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

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

WBOY
WBOYオリジナル
2016-06-23 14:05:00887ブラウズ

<?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($ib225a7444c3f2061cc0e59d3e6cff7b0'; $items[] = array_shift($items); foreach($items as $v) echo $v;echo '
' = array_s……



やってみます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。