3

ユーザーが記入するフォームがあり、その内容は処理のためにdompdfに送信されます。ユーザーがフィールドに入力しないことを選択した場合、フォーム全体の空のフィールドの結果のpdfに「入力されていない」ことを反映させたいと思います。

次のようにして、処理のためにdompdfに送信される前に、フィールドを更新しようとしています。

<?php

foreach ($_POST as $key => $value)
    {
        if(empty($value))
            {
                $_POST[$key] = "Not entered";
            }
    }
?>

しかし、それは機能しません。空の$valueを渡すだけです。

だから私の質問は:$_POST配列をループして$key => $valueペアの$valueを$valueが空の場合は「入力されていません」に置き換えるにはどうすればよいですか?

助けてくれてありがとう。

4

6 に答える 6

0

Isset()は、変数に(False、0、またはEmpty string)を含む値があるかどうかをチェックしますが、NULLではありません。varが存在する場合はTRUEを返します。それ以外の場合はFALSE。

一方、empty()関数は、変数に空の値の空の文字列、0、NULL、またはFalseがあるかどうかをチェックします。varの値が空でもゼロでもない場合、FALSEを返します。

<?php

    foreach ($_POST as $key => $value)
        {
            if(!isset($value))
                {
                    $_POST[$key] = "Not entered";
                }
        }
    ?>
于 2012-08-13T18:33:43.210 に答える
0

次のようにphparray_map関数を使用してこれを実現できます。

$array = $_POST;
$array = array_map(function($val) { return isset($val) ?$val:'Not entered'; }, $array);

しかし、そうすると、将来のプログラマーがどこから来たのか混乱するでしょう。したがって、それを変数に割り当てて、必要な場所に送信します。

于 2012-08-14T12:05:02.693 に答える
0

空の要素は送信されないため、PHP コードには何も表示されません。

1 つの代替方法は、フォームの送信時に Javascript を使用してこれらの値を挿入することです。次のようなことができます。

<form onsubmit="return yourjsfunction();" />

JS 関数は、値が入力されていないすべての入力要素を収集し、それらの値を「未入力」に設定できます。その後、呼び出しますform.submit();

于 2012-08-13T18:36:45.340 に答える
0

空のフィールドは POST で送信されません。

vardump($_POST)どのフィールドが送信されるかを確認します。したがって、を使用して空のフィールドをテストできますisset。変数が設定されていない場合は、必要に応じて何でもできます。

if(!isset($_POST['foo'])) {
    // the field foo was empty
}
于 2012-08-13T18:36:53.253 に答える
0

試す

<?php

foreach($_POST as &$value){
  if (empty($value)) $value = "Not entered";
}

?>

to&を先頭$valueに追加foreachすると、値をインラインで変更できます http://php.net/manual/en/control-structures.foreach.php

ただし、HTML フォーム (フォーム タグ/入力要素) を使用している場合、フォームは入力された要素のデータのみを送信します。

PHPのこれらの行に沿ってJavaScriptソリューションまたは何かを調べたい場合があります

<?php

if (empty($_POST['name'])) $_POST['name'] = "Not entered";

?>

キーは実際にはリクエストの一部ではないため、手動で提供する必要があることに注意してください

空であってはならないキーが多数ある場合は、次のようなものを試してください

<?php

$notempty = Array('name', 'address', 'email');
foreach($notempty as $v){
  if(empty($_POST[$v])) $_POST[$v] = 'Not entered';
}

?>

このように、名前、住所、または電子メールのいずれかが空の場合、それらは「未入力」で埋められます

于 2012-08-13T18:35:37.577 に答える
0

以下で動作するようです:

foreach ($_POST as $key => $val) {
    if (empty($val)) {
    $post -> $key = "not entered";
    }
    }

これは、送信時にそれ自体にポストする HTML フォーム用です。(多分指摘した方がいいと思います…)。

于 2012-08-15T17:53:56.693 に答える