数组搜索未按预期工作

myw*_*unt 3 php

我试图取代值事件ID$fields与映射到(数值数组idEvent中)$aliases数组,但PHP的array_search函数返回错误的位置.注意:我将值转换为全部小写,因此它应该返回一个匹配,它似乎array_search是返回一个索引,但它应该返回索引2而不是索引,1因为它是$fields数组中的第三个值.

不幸的是,如果您运行代码(例如,将其复制并粘贴到此处:http://writecodeonline.com/php/),则返回错误的值.有人可以告诉我,如果我做错了吗?

$fields = array('Host', 'OS', 'Event Id');
$aliases = array('idEvent' => 'Event ID');

 foreach ($aliases as $actual => $alias){

    $alias = strtolower($alias);

    echo "searching fields(" . implode(',', array_map('strtolower', $fields)) . ") for $alias<br/>";
    if ($position = array_search($alias, array_map('strtolower', $fields)) !== FALSE) {

        echo "$alias was found at \$fields[$position]";
        $fields[$position] = $actual;

    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我添加了一些echo语句,所以你可以做我想做的事情.

Mat*_*t S 6

这是if问题的陈述操作顺序.赋值运算符的优先级低于比较运算符,并且首先从右侧计算赋值.所以添加一些括号:

if (($position = array_search($alias, array_map('strtolower', $fields))) !== FALSE) {
Run Code Online (Sandbox Code Playgroud)

我发现这更容易阅读:

if (in_array($alias, array_map('strtolower', $fields))) {
Run Code Online (Sandbox Code Playgroud)