gpt4 book ai didi

php - 数组搜索未按预期工作

转载 作者:可可西里 更新时间:2023-11-01 00:33:15 25 4
gpt4 key购买 nike

我正在尝试用映射到 (idEvent) 的值替换 $fields 数组中的值 Event Id $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;

}
}

编辑:我添加了一些 echo 语句,这样您就可以了解我正在尝试做的事情。

最佳答案

问题出在 if 语句的操作顺序上。赋值运算符有 lower precedence比比较运算符,赋值是从右边开始计算的。所以添加一些括号:

if (($position = array_search($alias, array_map('strtolower', $fields))) !== FALSE) {

我觉得这更容易阅读:

if (in_array($alias, array_map('strtolower', $fields))) {

关于php - 数组搜索未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18127776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com