我有两个PHP变量可以是空的(即value=""
),或者包含一个名称为Last,First的逗号和最后一个名字之间的空格(例如Mouse,Mickey)。
我想在这里做一个简单的检查,并说如果一个变量不是空的并且等于另一个,那么检查一个复选框,但这不起作用。 有人可以告诉我我做错了什么(在下面的示例中应该选中复选框)?
我的问题是,即使变量不匹配,也会检查复选框。
示例:
$poc1 = "Mouse, Mickey"; // hard-coded for testing
$poc2 = "Mouse, Mickey"; // hard-coded for testing
<input type="checkbox" id="check2" name="Copy_POC" <?php if(($poc2 != "") && (strcmp($poc2,$poc1))) { echo "checked"; } ?> />
非常感谢你提供任何帮助,蒂姆。
答案 0 :(得分:1)
您需要查看strcmp
的函数签名及其返回值:
int strcmp ( string $str1 , string $str2 )
所以函数返回一个int,但是什么样的int?根据手册:
返回&lt;如果str1小于str2,则为0; &GT;如果str1大于str2则为0,如果它们相等则为0。
换句话说:如果两个字符串相等,strcmp
将返回0
,其结果为false
。你应该写的是:
strcmp($str1, $str2) !== 0
如果2个字符串不匹配,则评估为true。当然,您只希望在两个字符串 don&#t; 匹配时检查ckeckbox:
if ($str1 != '' && strcmp($str1, $str2) === 0)
{
//checked
}
应该这样做。当然,这仍然依赖于你的调用函数来检查这些字符串是否相等。但是,这并没有真正加起来,而且写起来可能要容易得多:
if ($str1 && $str1 === $str2)
//an empty string is falsy + type & value check on 2 strings using === operator
注意
您可能已经知道,PHP是基于C构建的,因此具有许多类似C的str*
函数。每当您看到strcmp
和strstr
等函数时,请检查其返回值。与C string.h
函数一样,它经常返回 指针(找到子字符串的字符串的一部分,如strstr
)或整数(字符串中的索引/偏移量) )...
答案 1 :(得分:0)
<?php if($poc2 && $poc2 === $poc1) echo "checked" ?>