Php 比较字符串时无法使IF语句工作

Php 比较字符串时无法使IF语句工作,php,Php,我正在尝试一个相当简单的测试,使用一个HTML复选框,用户可以在我的测试中选择最多四项食物。所选项目被传递到一个PHP脚本,我在其中对照所选项目检查它们,以确定用户选择了什么 基于此,我使用if语句来确定用户选择的内容,并将二进制值写入数组以供将来处理,这是下一个要处理的项目 我的问题是,我无法让if语句成为真。正如您从代码中看到的,我使用trim去掉了多余的字符,并使用var_dump和print命令查看在输入if语句集之前的内容 到目前为止,一切似乎都还不错,但if语句永远都不是真的,我在每

我正在尝试一个相当简单的测试,使用一个HTML复选框,用户可以在我的测试中选择最多四项食物。所选项目被传递到一个PHP脚本,我在其中对照所选项目检查它们,以确定用户选择了什么

基于此,我使用if语句来确定用户选择的内容,并将二进制值写入数组以供将来处理,这是下一个要处理的项目

我的问题是,我无法让if语句成为真。正如您从代码中看到的,我使用trim去掉了多余的字符,并使用var_dump和print命令查看在输入if语句集之前的内容

到目前为止,一切似乎都还不错,但if语句永远都不是真的,我在每个语句中都加入了echo语句来告诉我这一点。下面是当我选择了所有四种食物时,有问题的代码片段和PHP脚本的输出。我很感激你的洞察力

ps-我也尝试用strcmp代替IF语句,但没有效果

PHP:

for ($i=0; $i<count($userChecked ); $i++) {

 // var_dump to show what exactly was passed

 trim($userChecked[$i]);

 var_dump($userChecked[$i]);

 print "<pre>[".$userChecked[$i]."]</pre>";

// now go through each checked item to see where the match is
// echo that we have a match and set the corresponding array value to 1

 if ($userChecked[i]=="soup") {
   echo  "the user wants soup<br />";
   $pref_array[0] = '1';
 }

 if ($userChecked[i]=="salad") {
   echo  "the user wants salad<br />";
   $pref_array[1] = '1';
 }

if ($userChecked[i]=="cheese") {
   echo  "the user wants cheese<br />";
   $pref_array[2] = '1';
 }

if ($userChecked[i]=="sardines") {
   echo  "the user wants sardines<br />";
   $pref_array[3] = '1';
 }

 }
选中所有复选框时的输出:汤、沙拉、奶酪、沙丁鱼:

汤 [汤] 色拉 [沙拉] 丝状奶酪 [奶酪] 8条沙丁鱼
[sardines]

$userChecked[i]不会给出输出,因为i不是数组的索引或数组的键。因此,您必须使用$userChecked[$i]来代替

$userChecked[i]不会给出输出,因为i不是数组的索引或数组的键。因此,您必须使用$userChecked[$i]来代替

您希望$userChecked[$i]而不是[i]——i不是范围中定义的常量。打开错误报告,您将更快地发现此类错误:@Martin Sharp eyes.:也许最好将字符串与您想要的$userChecked[$i]而不是[i]-i不是范围中定义的常量进行比较。打开错误报告,您将更快地发现此类错误:@Martin Sharp eyes.:也许比较字符串更好,非常感谢!这使得IF语句按预期的方式工作。也感谢您的快速回复戴维森:非常感谢你!这使得IF语句按预期的方式工作。也感谢您的快速回复戴夫