"1", "L"=>"1.", "O"=>"0", -6ren">
gpt4 book ai didi

php - array_search() 不匹配带点的数字

转载 作者:行者123 更新时间:2023-12-05 01:05:45 26 4
gpt4 key购买 nike

我做密码翻译。我在翻译以点结尾的加密字符时遇到问题。我有以下字典:

$dict = array(
"I"=>"1",
"L"=>"1.",
"O"=>"0",
"Q"=>"0.",
"Z"=>"2",
"?"=>"2."
);

当我使用这个时:

function decode($cypher,$dict){

$sepp = explode(" ",$cypher);

foreach($sepp as $char){
echo array_search($char,$dict);
}}

decode("1. 0. 2.",$dict);

我得到:

IOZ

而不是预期:

LQ?

最佳答案

默认情况下,array_search 执行与 == 运算符相同的比较,它将尝试 "type juggle"某些值。例如,'1' == 1, '1.' == 1'1.' == '1' 都是真的。

这意味着 '1''1.' 将始终匹配查找表中的相同元素。

幸运的是,该函数接受了第三个参数,the manual describes如:

If the third parameter strict is set to true then the array_search() function will search for identical elements in the haystack. This means it will also perform a strict type comparison of the needle in the haystack, and objects must be the same instance.

这使它等效于 === 运算符。注意 '1' === 1, '1.' === 1'1.' === '1' 都是假的。

所以你只需要添加那个参数:

echo array_search($char,$dict,true);

关于php - array_search() 不匹配带点的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70356177/

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