PHP で foreach を反復処理する際に元の配列値を保持する
PHP で多次元配列を操作する場合、元の配列値を変更するのは困難な場合がありますforeach ループを使用して配列を反復処理する際に、配列を取得します。この質問では、この問題について詳しく掘り下げています。目標は、ネストされた配列内の値キーを変更することです。
指定された例では、$fields[$field]['value'] を使用して元の配列を変更しても、期待どおりに動作します。この問題は、PHP の foreach ループが配列の値を参照によって渡すために発生します (オブジェクトではありません)。これは、変数 $field を変更しても元の配列には影響しないことを意味します。
これを解決するには、ループ中に配列キーを使用することをお勧めします。回答で提供されている更新されたコードは、次のことを示しています。
foreach ($fields as $key => $field) { if ($field['required'] && strlen($_POST[$field['name']]) <= 0) { $fields[$key]['value'] = "Some error"; } }
このコードでは、$key は現在の配列要素のキーを表します。 $fields[$key] を使用することで、元の配列にアクセスし、正しい値を変更します。これにより、ループ内で行われた変更が checkForm 関数によって返される元の配列に確実に反映されます。
以上がPHP で foreach ループを使用するときに元の配列値を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。