2013-05-31 40 views
-6

我想在PHP中设置一个if语句结果的变量。这可能吗?这就是我此刻想:php - 将变量设置为if语句的结果

$myVariable = if (strlen($myString) > 0){ 
       echo '<p>'.$myString.'</p>' 
       }; 
echo $myVariable; 

具体来说,我想echo $myString<p>标签,但只有当$myString的长度大于0

我很欣赏我呼应在这里回声,但因为我得到一个意想不到的if解析错误,我认为我的问题比这更深,所以我试图找出这是否可以完成或如果我需要去解决它不同的方式。谢谢你的时间。

+0

你们是不是要设置'$ myVariable'到'

$ myString的

'的长度> 0? – JohnB

+1

'if'是一个语句,而不是“查询”。逻辑是*如果某事是真实的,做某事*,而不是*如果事情是真实的事情做*。 – deceze

+0

是的,这正是我想要做的。 – sanjaypoyzer

回答

3

要做到这一点的方法...

要回答原来的问题回复:您的格式,你可以使用if语句来定义一个变量,但没有特别的可读性:

$myVariable = (strlen($myString) > 0) ? '<p>'.$myString.'</p>' : ''; 
echo $myVariable; 

Live demo

推荐的方式来做到这一点...

然而,在你的情况,这是完全没有必要,你可以用更易懂的形式:

注:PHP echo没有一个产品错误如果传递一个未定义的变量。它只会回应我所想的任何事情,就是你想要它做的事情。

if (strlen($myString) > 0) { 
    $myVariable = '<p>'.$myString.'</p>'; 
} 
echo $myVariable; 

Live demo with $myString set and empty for the neighsayers

补充说明再strlen性能...

您可能会发现使用if(isset($myString))比使用if(strlen($myString)>0)更高效:isset(0.064秒)VS strlen(0.144秒)。如果$myString可能为undefined,那么strlen变为up to 3x slower still(0.5秒),而issetbecomes faster(0.048秒)。

所以你的最终代码应该是:

if (isset($myString)) { 
    $myVariable = '<p>'.$myString.'</p>'; 
} 
echo $myVariable; 
+1

如果未设置$ myVariable,它将发生错误。 – Hasina

+0

@Hasina - 不会,PHP'echo'函数不会产生一个错误,如果喂了一个未定义的变量。看我的现场演示。 –

+0

@LightningDust这太棒了,谢谢。 – sanjaypoyzer

0

的代码应该是

$myVariable = ''; 
if (strlen($myString) > 0){ 
    $myVariable = '<p>'.$myString.'</p>'; 
}; 
echo $myVariable; 
0

我认为这是你想要完成什么,只是没有解释权利,这就是为什么你得到了下来投票,反正:

$myVariable = (strlen($myString) > 0 ? '<p>'.$myString.'</p>' : ''); 
0

使用这样的:

$myVariable=(strlen($myString) > 0)? "<p>$myString</p>" : ""; 

echo $myVariable; 

在代码中,你错过了; (分号)在echo结束,这就是为什么你解析错误

-1

试试这个:

if(strlen($myString)>0){ 
    $myVariable = '<p>'.$myString.'</p>'; 
} 
echo $myVariable;