PHP での foreach ループを使用した元の配列値の変更
PHP で配列、特に多次元配列を操作する場合、その要素にアクセスして変更すると、トリッキーになる。 foreach ループを使用して配列を反復処理し、元の値を更新するときに、一般的な課題が 1 つ発生します。
この場合、フォーム フィールド情報を表す配列 $fields について考えてみましょう。
$fields = [ "names" => [ "type" => "text", "class" => "name", "name" => "name", "text_before" => "name", "value" => "", "required" => true, ] ];
次に、フィールドを検証し、対応するフォーム入力が次の場合に「値」キーを「何らかのエラー」に設定する関数を想像してください。 empty:
function checkForm($fields) { foreach ($fields as $field) { if ($field['required'] && strlen($_POST[$field['name']]) <= 0) { $fields[$field]['value'] = "Some error"; } } return $fields; }
問題のある行は次のとおりです:
$fields[$field]['value'] = "Some error";
ここでの目的は元の配列を更新することですが、配列キーにアクセスする方法がすぐにはわかりません (この場合) 、"names") をループ内で使用します。
元の配列に $key を使用するインデックス作成
解決策の 1 つは、foreach ループ内で使用できる $key 変数を利用することです。これは、反復処理される現在の配列要素のキーを表します:
foreach ($fields as $key => $field) { if ($field['required'] && strlen($_POST[$field['name']]) <= 0) { $fields[$key]['value'] = "Some error"; } }
このアプローチでは、$field を使用して現在のフィールドの値にアクセスし、$fields[$key] を使用して元の配列を操作することで、効率的な変更が可能になります。要素の「value」キーの。
以上がPHP で foreach ループを使用して元の配列値を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。