2009-08-12 11 views
0
if (strlen($title) > 2 && ($msg) > 2 && ($email) > 2)) { 
//true 
} else { 
//false 
} 

1つ以上のvarをチェックする正しい方法は何でしょうか?これは動作しません..多くの方法を試しましたphp strlen関数と2つの変数

答えて

0

varsのそれぞれについてstrlenを呼び出すのはどうですか?

if (strlen($title) > 2 && strlen($msg) > 2 && strlen($email) > 2) { 
//true 
} else { 
//false 
} 

各変数の長さを取得したい場合は、これらの変数のそれぞれに...を実行する関数を使用する必要があります。

EDIT:それを投稿する前にコードをテストする必要があります:あなたはそれを維持する場合は、あなたがパースエラーを取得します;-)

に属していない、あなたのコード内の1つのクロージングParentheseのがあります。

0

は、私はあなたがこれをしたいと思う:

if (strlen($title) > 2 && strlen($msg) > 2 && strlen($email) > 2) { 
    //true 
} else { 
//false 
} 

はすぐに、関数名の後の括弧内にその関数の引数を関数名を指定してする必要がある関数を呼び出すとき。使用する関数が(たとえば strlenのような)可変数の引数を受け入れない場合は、関数を複数の時間、それぞれの変数に対して1回呼び出す必要があります。

このようなケースでは、しばしばこのように、独自の機能で何かのこの種をカプセル化するために最善のことができます:

function isValid($title, $msg, $email) { 
    return 
     strlen($title) > 2 && 
     strlen($msg) > 2 && 
     strlen($email) > 2; 
} 

その後、あなたはこのような新しい機能を使用するようにif文を変更します

if (isValid($title, $msg, $email)) { 
    //true 
} else { 
//false 
} 
1

test> 2の長さをテストするには、他の2つの変数でstrlenを呼び出すだけです。また、最後の括弧を削除する必要があります。これと同じように:他には関係ありません。

if (strlen($title) > 2 && strlen($msg) > 2 && strlen($email) > 2) { 
4

あなたが注意しなければならないことは、ブール演算子(& &など)との間にすべてがあることです。

例えば:あなたはaが大きい」として、それをプログラムする必要があり、「AとBが2その後、大きくなっている」と言うことができます話し言葉とは異なり

strlen($a) && strlen($b) 

strlen($a) && $b

は同じではありませんその後、2、bは2"

すなわち次に大きい:

if (strlen($title) > 2 && strlen($msg) > 2 && strlen($email) > 2) 

ヨーヨー場合

function validateLength() { 

// get all passed in arguments 
$args = func_get_args(); 
// get the first argument as the length 
$len = array_shift($args); 

foreach($args as $arg) { 

    if (strlen($arg) < $len) return false; 

} 
return true; 

} 

使用法:

$valid = validateLength(2, $title, $msg, $email); 
uがこのような何かが仕事と長さを確認し、再利用可能な機能を求めており、任意の数の引数を取ります