PHP - 用==比较运算没有得到预期的结果
有了这个代码:PHP - 用==比较运算没有得到预期的结果
if($foo['bar'] == $baz) {
$results[] = $foo;
}
我永远达不到分配$results[] = $foo;
(某一个值)
现在,如果我这样做(与此相同,一定值):
strcmp(trim($foo['bar']), trim($baz));
我得到的0
结果,表示字符串其实都是平等的。那么...为什么在世界上我不能达到$results[] = $foo;
?
如果两个strcmp等于0,$ foo ['bar'] == $ baz是不是应该为真?我错过了什么?
顺便说一句,它只是一个特定的比较失败。使用相同的if语句的其他比较将正常工作。
例如:
当$ foo的[ '酒吧'] == '肉' 和$巴兹== '肉',我得到$结果[ '肉']
但是当$ foo的[”酒吧'] =='肉酱'和$巴兹=='肉酱'我得到$结果[]
观察到的行为没有意义,所以必须有一个隐藏的陷阱。让我们从trim
似乎使它工作的事实开始。
您是否使用var_dump
来验证$foo['bar']
和$baz
确实具有相同的值?
谢谢乔恩。我在我的测试中包含了trim(),但没有包含有问题的代码。当我看到var_dump时,我看到一个结果是一个字符更长,“去了什么?我修剪了那个......呃,哎呀”。所以谢谢你的帮助。 – Lothar 2011-03-21 01:36:54
如果你有拖阵列,说A和B,你想assing阵列B到A你这样做:
$A = $B;
,如果你想assing只有一个元素:在
$A[] = $B[5]; // ether by index or key
您如果您尝试将整个数组分配给阵列中的某个元素,请尝试以下操作:
$results[] = $foo['bar'];
如果您要分配w如下所示:
$results['key1'] = $foo[];
结果数组中的每个键都会保存数组。
你可以发布围绕此代码的代码,并可能发送真正的值,因此它可以被测试?日Thnx。 – DeaconDesperado 2011-03-21 01:24:56
@DeaconDesperado - 明白了。我只是在我的测试中包含了trim(),但没有在实际遇到麻烦的代码中叹息。 – Lothar 2011-03-21 01:38:10