ホームページ >バックエンド開発 >PHPチュートリアル >foreach を使用して PHP で配列スキャンを制御する
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++; } }
私を指導できる専門家はいますか? 私は 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 のおかげで、私の論理には確かに問題があります