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