- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在使用 PHP 函数 in_array()
时发现了一些奇怪的行为。我有一个这样的数组:
$arr = [TRUE, "some string", "something else"];
现在如果我想检查 "test"
是否在数组中,显然不在,但 in_array()
仍然返回 TRUE,这是为什么呢?
$result = in_array("test", $arr);
var_dump($result); //<b>Output: bool(true)</b>
同样的事情发生在使用 array_search()
时:
$result = array_search("test", $arr);
var_dump($result); //<b>Output: int(0)</b>
我想也许数组中的值 TRUE 会自动导致函数在不检查数组的其余部分的情况下为每个结果返回 TRUE,但我找不到任何文档表明这个非常奇怪的功能。
最佳答案
函数的这种行为 in_array()
和 array_search()
不是错误,而是有据可查的行为。
这两个函数都有一个名为 $strict
的第三个可选参数,默认情况下为 FALSE:
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )
现在这意味着默认情况下两个函数都使用松散的 (==
) 比较来比较值。所以他们只检查值是否相同之后 PHP 类型杂耍而不检查类型。因此,在您的示例中,TRUE == "any none emtpy string"
的计算结果为 TRUE。
因此,通过在调用函数时将第 3 个参数设置为 TRUE,您表示 PHP 应该使用严格(===
)比较,并且它应该在比较时检查值和值的类型。
关于PHP in_array()/array_search() 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2739441/
我做密码翻译。我在翻译以点结尾的加密字符时遇到问题。我有以下字典: $dict = array( "I"=>"1", "L"=>"1.", "O"=>"0",
嘿,伙计们,女孩们,我被难住了。尝试让 array_search 使用此脚本。 **cannot find file to create array**"); //searc
Array ( [0] => 159042564114859_722842697734840 [1] => 180466813056_10152147419628057 [2]
我有一个数组 第一个: [0] => 0289 [1] => 0146 [2] => 5519 [3] => 5308 [4] => 5503 [5] => 5357 第二个(关联):
我有一个数组的 第一个: [0] => 0289 [1] => 0146 [2] => 5519 [3] => 5308 [4] => 5503 [5] => 5357 第二个(联想):
这里我有两张 table ,即房间和学生宿舍。房间看起来像这样 id rm_number capacity bed_no class hostel
我有一组要应用搜索功能的项目。我正在考虑对数组进行排序并暂时简单地应用二进制搜索,因为它不需要太复杂,但是如果我遇到问题,我会尝试其他方法。 我的问题是; array_search() 中使用的搜索算
这个问题在这里已经有了答案: PHP in_array() / array_search() odd behaviour (2 个答案) 关闭 6 年前。 我最近注意到在我的代码中使用 array_
我正在做一个日历,每天可能有超过 1 个事件与日期匹配。目前我很困惑如何发现比 array_search 的第一个匹配项更多的内容。这是我现在正在做的事情。 if (array_search($dat
这个问题在这里已经有了答案: PHP in_array() / array_search() odd behaviour (2 个答案) 关闭 6 年前。 我有这个数组: $ar = [ 'key1
PHP 的 array_search() 执行此操作: Searches the array for a given value and returns the corresponding key i
这里有两个表,即 tools 和 tool_use。 工具表看起来像这样 id name tools_names
我有一个简单的函数,它查看传入的 mySQL 数据类型,然后将其汇总到一个“类别”(在此代码中称为一个系列),以便我可以在类别级别应用默认值。不管怎样,这段代码在查找整数、字符和文本类别时工作正常,但
今天,我发现 php array_search 函数有一个很奇怪的问题。实际上我应用的条件是,如果索引是 0 或大于,它应该通过 IF 条件,否则不会,但它不会像那样工作。 我分析发现,如果输出是FA
在一维数组中使用 array_search 很简单 $array = array("apple", "banana", "cherry"); $searchValue = "cherry"; $key
$array_subjected_to_search =array( array( 'name' => 'flash', 'type' => 'hero'
我想从 $routes 数组中获取匹配的路由。如果有多个数组具有相同的“ur”值。我想得到所有这些。 普通的数组项看起来像; [ "controller" => "RegisterControl
我一直在为 array_search 苦苦挣扎,虽然我想我现在已经理解了,但我只想确保我完全理解我的代码执行方式背后的逻辑。 我正在尝试编写一个函数,如果元素不在数组中,则将其添加到数组中,如果是,则
以下代码将拆分一个句子并告诉我第一次出现单词 orange。你能告诉我是否可以使用 php 库函数找到第二次出现的单词 orange。我可以通过使用 for 循环 来做到这一点,只是想知道 array
我有这个代码 $restaurant = array('/restaurant_pos/', '/bar_nightclub_pos/') $current_page = $_SERVER['REQU
我是一名优秀的程序员,十分优秀!