配列を反復処理する方法はありますが、他のすべての要素に対して操作を実行する方法はありますか? ie要素が13個の配列を持っている場合、要素2,4,6,8,10、および12に対してのみ何かを行うにはどうすればよいですか?PHPで配列の選択的な反復
答えて
は、より高速のために答えると誤字修正:
for ($i = 1, $j = count($array); $i < $j; $i += 2) {
// code
}
for ($i=1; $i<sizeof($array); $i+=2) {
// do stuff to $array[$i]
}
あなたもforeachループに統合することができます
$i = 0;
foreach ($array as $v) {
if ($i++ & 1) continue;
// do stuff to $v
}
注:$i & 1
は($i % 2) == 1
(または単に$i % 2
)に相当します。 cletusesを修正する
foreach($array as $val) {
if(($i++ % 2) == 0) {
...do stuff here...
}
}
これは、中括弧を除いて私がやる方法です。ロジックは単純ではありません。これは、ループロジックを書き直さずに、elseで拡張するのが簡単であることを反映しています。 – Kris
回答は素晴らしいです、ありがとう。現実世界の例を追加することはできますか? 私は週の各曜日に2つの要素を持つ配列を持っています。 (番号付けは0から始まる)。私はそれぞれの要素ではなく、毎日何かをするループが必要です。これを達成するためにあなたが与えた答えをどのように使うことができますか? PSまだ投稿するコードはありません、私はちょうどそれを最初に試してみようとしています! – musoNic80
あなたの配列も同じように見える場合 $ array = array( 'mon1'、 'mon2'、 'tue1'、 'tue2' ... 'fri2');常に異なるパターンに従うと、そのコードを書かれたとおりに使用することができます。あなたが毎日ヒットしていることを確認したい場合は、何とかそれを検証する必要があります。何が入っているのか、何をしたいのかを本当に分からずに言うのは難しいです。 –
フィル・カーターの答えと同様にすでに掲載の回答の別のバリエーションを...。配列に数値インデックスがある場合は、個別のカウンタ変数を管理する代わりにforeachでそのインデックスを使うことができます:
foreach ($array as $i => $v) {
if (! ($i % 2)) {
// do stuff to $v
}
- 1. configObjセクションの選択的な反復
- 2. PHP配列反復ロジックの問題
- 3. MYSQLが列に反復可能なフィールドを選択
- 4. 非反復乱数配列
- 5. HashMapでの配列の反復
- 6. PHPで配列キーを選択する
- 7. PHPで配列を反復処理する
- 8. PHPで多次元配列を反復するには?
- 9. MYSQLのPHP配列を選択
- 10. Delphi動的配列の反復とレコードのコピー
- 11. 選択PHPのmysqlの、配列結果配列結果
- 12. PHP:配列から子を選択
- 13. PHP配列からMYSQLデータを選択
- 14. numpy配列の高速反復
- 15. オブジェクトの配列を反復する
- 16. 反復PHPオブジェクト
- 17. リスト/配列を再帰的に反復する
- 18. Rails反復的なバックグラウンドジョブ
- 19. json配列フィールドを反復する
- 20. fish:配列/リストを反復する
- 21. Obj-C配列を反復する
- 22. 配列を使ったPython反復
- 23. boostマルチ配列を反復する
- 24. 配列の配列を反復処理する方法
- 25. 配列の配列を反復するアルゴリズムについて
- 26. 3Dアレイでの効率的な反復?
- 27. 選択ソート配列
- 28. 反復なしでlua配列を作成する方法
- 29. 選択SQLおよび配列は、PHPでのログインページでは
- 30. PHP連想配列からランダムな要素を選択
これから何かを学び、最初の式(またはそれ以降の変数)に複数の変数を割り当てることはできませんでした。ありがとう! –
スピード?最高でも、配列サイズを「キャッシュする」ことはマイクロ最適化です。意味的にも同等です。ループ中に配列のサイズが変わるとどうなりますか? – cletus
@phil、np。喜んで助けてください:) @cletusループ中に配列が変更された場合は、ループ内でforeachまたはupdate $ jを使用する必要があります。速度最適化と有効なものです。 1000000の値の配列を想像してみてください。 – Ozzy