2016-12-16 126 views
0

我知道这是可以利用运营商时,这样的呼应值和执行功能:如何在php中使用运算符时返回字符串?

function echoTadaa() { 
    echo "taTaaa"; 
} 
echo true && echoTadaa(); 

结果是: TATAAA

不过是它在某种程度上可以将字符串(任意)值保存到使用操作符时变量?

$var = true && 'tadaaa'; 
var_dump($var); 

结果是:布尔(真)

预期的结果是:字符串(6) “TATAAA”

+0

这是什么为了什么? –

+0

这并没有多大意义:布尔运算符的结果是一个布尔值,为什么它是一个字符串?为什么你会希望它是一个字符串? – jeroen

+0

我希望它是字符串,因为我不想写太多的代码行。我了解三元运营商,但我们不能在我们的团队中使用它们。我们已经创建了自己的标准来使代码可读。这是一个笑话。我想写三元运算符而不使用三元运算符。 – Michal

回答

1

你的意思是这样吗?

function echoTadaa() { 
    return "taTaaa"; 
} 
$str = true . echoTadaa(); 

https://3v4l.org/WFb0f

返回 “1taTaaa”,其中1 =真

+0

这真的很酷。 '回声真实。 echoTadaa();'但我不能使用它。我想将echoTadaa的值保存到变量中。我不想马上回应它。 – Michal

+1

@Michal现在它保存到$ str。 – Andreas

+0

哇。但是,当你改变为假。它也保存到字符串。 – Michal

1

我真的不知道为什么你不想这样,但你可以这样来做:

if(true && $a= "hello"){ 

} 
var_dump($a); //string(5) "hello" 

如果条件得到满足,则将作出分配。 但在那种情况下,你可以,如果条件中指定$一个变种..

或者您可以使用三元运算符:

$a = true ? "yes" : "no"; 

演示在这里:https://3v4l.org/i6Hnf

这是一个荒谬的笑话。我想写三元运算符而不使用三元运算符。

那么你不能做到这一点:

$a = true && "something"; 
echo $a; 

因为评价总是会返回布尔值,因此变量$一个包含布尔,不是你的字符串。

你可以做一些混淆,使代码看起来象是这样工作的 喜欢这里解释:https://www.thc.org/root/phun/unmaintain.html

+0

没错。我想写三元运算符而不使用三元运算符。 – Michal