ホームページ > バックエンド開発 > PHPチュートリアル > foreach を使用して PHP で配列スキャンを制御する

foreach を使用して PHP で配列スキャンを制御する

WBOY
リリース: 2016-06-23 13:59:56
オリジナル
959 人が閲覧しました

    foreach ($c_f_arr as &$c_f) {                      if (trim($c_f[0])==trim($char)) {                          echo "$char is exist <br>";                          $c_f[1]++;                                                    echo "hahaha <br>";                          echo "this is cf: $c_f[1] <br>";                      }                      else {                          echo "$char is not exist <br>";                          $c_new=array(trim($char),'1');                          array_push($c_f_arr, $c_new);                          $n++;                      }                  }   
ログイン後にコピー

値を挿入した後、foreach はグループを最初からスキャンし、それを数回挿入します。 。 。 foreach にはこの要件がありますか?それを壊すにはどうすればいいですか?まだ検討中です。 。 。


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

私を指導できる専門家はいますか? 私は PHP を 1 週間学んだばかりの初心者です。 。 。 。 。 。

foreach ステートメントは、オブジェクトの配列またはコレクション内の要素ごとに、埋め込みステートメントのグループを繰り返します。 foreach ステートメントは、コレクションを反復処理して必要な情報を取得するために使用されますが、予期しない副作用を避けるために、コレクションの内容を変更するためには使用しないでください。

記述のロジックに問題があります。ループが存在するかどうかを確認するには、ループを完了する必要があります。

配列に同じ値がある場合は count が増加し、配列にその値が存在しない場合は値が増加すると考えるべきです。
次のように記述できます:

<?php$arr = array(array('a',0),array('b',0),array('c',0));$char = 'a';$is_exists = 0;for($i=0,$len=count($arr); $i<$len; $i++){    if($arr[$i][0] == $char){        $arr[$i][1]++;        $is_exists = 1;        break;    }}if($is_exists==0){    array_push($arr, array($char,0));}print_r($arr);?>
ログイン後にコピー
ログイン後にコピー

foreach は、break を使用してループから抜け出します

foreach ステートメントは、配列またはオブジェクト コレクション内の要素ごとに埋め込みステートメント グループを繰り返します。 foreach ステートメントは、コレクションを反復処理して必要な情報を取得するために使用されますが、予期しない副作用を避けるために、コレクションの内容を変更するために使用しないでください。

記述のロジックに問題があります。ループが存在するかどうかを確認するには、ループを完了する必要があります。

配列に同じ値がある場合は count が増加し、配列にその値が存在しない場合は値が増加すると考えるべきです。
次のように書くことができます:

<?php$arr = array(array('a',0),array('b',0),array('c',0));$char = 'a';$is_exists = 0;for($i=0,$len=count($arr); $i<$len; $i++){    if($arr[$i][0] == $char){        $arr[$i][1]++;        $is_exists = 1;        break;    }}if($is_exists==0){    array_push($arr, array($char,0));}print_r($arr);?>
ログイン後にコピー
ログイン後にコピー


ありがとうございます!

Mystery138 のおかげで、私の論理には確かに問題があります

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