私はサイトオプションの配列を持っています。PHP - if文に問題があります。 0、NULLと ""の違い
次に、foreachループを使用してユーザーから送信されたすべてのデータを検証する関数を用意しました。変数のほとんどはどこから来たあなたは知らないでしょうが、これは、この場合では重要ではありません:フィールドが「それは価値があるだ空の場合、
function settings_validation($input) {
$settings = my_array();
foreach ($settings as $setting) {
//this function leaves the old field's value if there's no input
if($type == 'something' && empty($input[$id])) {
$valid_input[$id] = $option[$id];
}
//this function updates the field if input is not NULL
else if($type == 'something' && !empty($input[$id])) {
$valid_input[$id] = $input[$id];
}
return $valid_input;
};
$入力が提出した後に生成されたすべてのフォームフィールドの配列です"
ここで問題が発生します。
フィールドを消去したい場合、このフィールドにデータを残さずにフォームを送信すると、データは送信されず、常に最初のifステートメントが実行され、フィールドは消去前の状態になります。
最初のif文を削除してからフォームを送信すると、編集したオプションに新しいデータが送信され、他のすべてのデータは消去されます($入力が空であるため)。
関数で生成された空の$入力とユーザーの操作で作成された空の$入力の違いを調べるには、どのようなチェックを行うべきですか?
私が使用しているsettings_validation()関数は、register_setting()という別の関数のコールバックです。WPSEではなくPHP関連の問題であるため、ここで質問しています。
あなたはループ内で使用することはありませんが、あなたは '$ input'、' $ valid_input'と '$ option'をインデックス' $ id'で参照するだけです...そこにありますいくつかのコードがありませんか?何かが追加されません... – Yaniro
すべては完全に上質で、 '$ id = $ setting ['id']'とそれだけです。 – Wordpressor
すべての変数がどこから来たのか分からずには分かりません。フォームがすでに存在するものを編集するのであれば、確かにそれをその情報で埋めているのですが、それが空に戻ってくるのは、ユーザーがそれを削除したからです。 – Josh