PHP if 语句测试和存储

PHP if statement testing and storing

首先对标题感到抱歉 - 我不知道如何表达得更好... 我需要测试某些东西是否为空字符串,如果不是我想存储它。我有这样的东西:

if (getStringBetween($array[0], "house", "dog") <> '') {
   $text = getStringBetween($array[0], "house", "dog");
}

能否缩短它以便我不重复此 getStringBetween($array[0], "house", "dog") 两次。

我知道我可以这样做:

$a = getStringBetween($array[0], "house", "dog");
if ($a <> '') {
   $text = $a;
}

但这是最​​好的方法吗?不存储这个"extra"$a变量可以吗?

谢谢!

你可以这样做:

$text = (getStringBetween($array[0], "house", "dog") != ""?getStringBetween($array[0], "house", "dog"):NULL);

如果 getStringBetween() 的 return 值不等于空字符串,则赋值,否则赋值 NULL,因此不设置变量。 (顺便说一句:我使用 != 而不是 <>,因为你不会在 php 中经常看到它,很可能在 SQL 中)

另外我认为这是在保存代码和使其不可读之间的边界。因此,使用哪一个由您决定。

你的模式没问题:

$a = getStringBetween($array[0], "house", "dog");
if ($a <> '') {
  $text = $a;
}

你不是真的 "storing the extra $a variable",是吗?`

第一条语句将变量存储在$a中。

if 块使用存储的 $a 来评估您的条件 ($a <> '')。

$text = $a 使用 $a 中相同的存储值赋值给 $text。

对我来说似乎都是正确的(而且更优化,因为函数 getStringBetween 只被评估一次)。

<?php
if ( strlen(($text = getStringBetween($array[0], "house", "dog"))) > 0) {
    echo $text;
}
else {
    echo "text is empty";
}