配列を反復処理する方法はありますが、他のすべての要素に対して操作を実行する方法はありますか? 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. 選択的反復ジレンマ
- 3. 反復PHP連想配列
- 4. ハウツー反復動的配列
- 5. 反復PHPの配列と検証データ
- 6. PHP配列反復ロジックの問題
- 7. 入れ子配列のPHP再帰的反復
- 8. Cで2次元配列の非反復ランダム要素を選択
- 9. は、反復配列
- 10. MYSQLが列に反復可能なフィールドを選択
- 11. 選択した数値インデックスで配列全体を反復する
- 12. ドロップダウン反復可能なフィールドのPHP配列の作成
- 13. Pythonでファイルを選択的に反復処理する方法
- 14. javacriptの配列の反復
- 15. PHPで配列キーを選択する
- 16. 最も効率的な型の配列を反復する
- 17. 配列全体の反復
- 18. Python。 numwise配列の反復
- 19. 反復配列中のエルムデクリメントカウンタ
- 20. slack、php、json - アプリケーションの選択を反復するための有効なマークアップ
- 21. MYSQLのPHP配列を選択
- 22. jqueryの選択ボックスにPHP配列
- 23. PHP配列URLからの選択
- 24. R:グループ内で反復なしの順序付き選択
- 25. Linq Entity Framework:IEnumerableへの反復データなしでテーブルデータを選択
- 26. 重複のない配列の配列の反復
- 27. Pythonで配列の要素を反復的に減算する
- 28. Reactでjsonオブジェクトの配列を動的に反復する
- 29. 非反復乱数配列
- 30. HashMapでの配列の反復
これから何かを学び、最初の式(またはそれ以降の変数)に複数の変数を割り当てることはできませんでした。ありがとう! –
スピード?最高でも、配列サイズを「キャッシュする」ことはマイクロ最適化です。意味的にも同等です。ループ中に配列のサイズが変わるとどうなりますか? – cletus
@phil、np。喜んで助けてください:) @cletusループ中に配列が変更された場合は、ループ内でforeachまたはupdate $ jを使用する必要があります。速度最適化と有効なものです。 1000000の値の配列を想像してみてください。 – Ozzy