我正在尝试将$fields
数组中的值事件ID 替换为{{1}中映射到( idEvent )的值数组,但PHP的$aliases
函数返回错误的位置。注意:我正在将值转换为所有小写,因此它应该返回一个匹配,似乎array_search
正在返回索引,但它应该返回索引array_search
而不是索引{{1}因为它是2
数组中的第三个值。
不幸的是,如果您运行代码(例如,将其复制并粘贴到此处:http://writecodeonline.com/php/),则会返回错误的值。有人可以告诉我,如果我做错了吗?
1
编辑:我添加了一些echo语句,这样你就可以做我想做的事了。
答案 0 :(得分:6)
这是问题的if
语句的操作顺序。赋值运算符比比较运算符具有lower precedence,并且首先从右侧计算赋值。所以添加一些括号:
if (($position = array_search($alias, array_map('strtolower', $fields))) !== FALSE) {
我觉得这更容易阅读:
if (in_array($alias, array_map('strtolower', $fields))) {
答案 1 :(得分:0)
array_search($alias, array_map('strtolower', $fields)) !== FALSE
这是对的吗?然后它转换为$position = 1
,因此你看到它找到了关键的一个,但实际上返回了相等的值......
使用括号或预先存储搜索值。
答案 2 :(得分:0)
$position
的分配值为1,因为它是比较array_search to !== FALSE
使用左侧的测试来解决问题。
if (false !== ($position = array_search($alias, array_map('strtolower', $fields)))) {
echo "$alias was found at {$fields[$position]}";
$fields[$position] = $actual;
}