2011-10-25 8 views
0

PHPの$ _POST変数を調べて"undefined"(jQueryの送信方法のため)を""または少なくとも" "に変更したいので、電子メールフォーム値が入力されていない場合は、"undefined"とは言わない(オプションのフィールド)。

ありがとうございます!

+1

代わりにjQueryで修正する必要があります。変数を使用する前に、変数を定義してみてください。 – animuson

+1

私はあなたのJavascriptスクリプトを修正する必要がありますと言うでしょう。 – deceze

+0

なぜ$ _POST変数を変更する必要がありますか、 "say"(出力)を変更してください。 REQUEST変数を編集するのは良い考えではありません。 –

答えて

3

私はここであなたがより良い未定義を処理するために、あなたのjavascriptを変更することを検討をお勧めします、しかし...

何のループがそれを行うには近づきませんです:

$_POST = unserialize(str_replace('s:9:"undefined";', 's:0:"";', serialize($_POST))); 

もあります次のような単一のループを使用するより典型的なアプローチ:

foreach($_POST as &$p) if($p=='undefined') $p = ''; 

注:serialize + unserializeというアプローチは、ループを使用しないという点ではクールですが、ループアプローチはおそらくわずかに高速です(特に$_POSTが大きい場合)。

+0

うわー。それは心が吹いている。私はまだその仕組みを理解していない:Pしかし、それは動作します!ありがとう。 – MadTurki

+0

@MadTurkiあなたがそれを好きでうれしい!私たちはワンライナーを愛していません。 – ghbarratt

+0

1つのライナーは素晴らしいですが、すべてのページ要求で 'serialize'と' unserialize'を呼び出す際のパフォーマンスのヒットをチェックしたいかもしれません。 'foreach'を使って値を反復するほうが速いかもしれませんが、私は100%確実ではありません。 –

1

PHPでは、foreachループで&シンボルを使用すると、値の代わりに参照として使用されます。参照を変更すると、元の値が設定されます。

<?php 
$_POST['text1'] = 'undefined'; 
$_POST['text2'] = 'undefined'; 
foreach($_POST as &$var) 
{ 
    if($var == 'undefined') 
     $var = ''; 
} 
print_r($_POST); 
?> 
<!-- Will output --> 
array(
    text1=> 
    text2=> 
) 
0
foreach ($_POST as &$var) { 
    if ($var === 'undefined') { 
     $var = ''; 
    } 
} 
+0

これは重複しています。 –

+0

@Craig White:すみません。 – Hammerite

1
if (isset($_POST['var'])) { 
    // it is set 
} else { 
    // it isnt set 
} 
関連する問題