1. ホーム
  2. php

[解決済み] PHPのforeachが元の配列の値を変更する [重複]。

2022-04-22 12:03:10

質問

私は多次元配列の初心者ですが、これはとても悩ましいことです。

私の配列は次のようなものです。

$fields = array(
    "names" => array(
         "type"         => "text",
         "class"        => "name",
         "name"         => "name",
         "text_before"  => "name",
         "value"        => "",
         "required"     => true,
    )
)

そして、これらの入力が必要であるかどうかをチェックする関数を作成しました。

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";

元の配列の内容を変更したいのですが、foreachループで現在の配列の名前(この例ではnames)を取得するにはどうしたらよいでしょうか?

どのように解決するのですか?

PHPでは、参照渡し( & ) は、......論議を呼びそうです。なぜそれが必要なのか、そしてその結果をテストしない限り、使わないことをお勧めします。

私は次のようにすることをお勧めします。

foreach ($fields as $key => $field) {
    if ($field['required'] && strlen($_POST[$field['name']]) <= 0) {
        $fields[$key]['value'] = "Some error";
    }
}

そのため、基本的には $field 値を必要とする場合は $fields[$key] は、データを変更する必要がある場合です。