in_array()和array_key_exists()之间有什么区别?

时间:2016-07-08 04:41:05

标签: php arrays

我在这里有疑问。实际上,in_array()array_key_exists()之间有什么区别。我试图找到这个,但我仍然困惑。我可以买一个样品吗?

感谢。

5 个答案:

答案 0 :(得分:12)

首先array_exist()中不存在PHP。它是array_key_exists()

差异:

in_array()检查数组中是否存在 (检查值,而不是键) 并返回{{ 1}},或{否} true

而:

array_key_exists()检查数组 中是否存在给定的索引(检入键,而不是值) 并返回false,否则返回true

选择给定的手册示例。跑到最后,你会清楚地看到差异。

关于这些功能的更多深度也写在手册中。

示例链接:https://eval.in/602279

答案 1 :(得分:1)

在数组中搜索arary的值,而array_key_exist()检查键存在并返回 喜欢

$arr=["a"=>1,"b"=>2,"c"=>3,4,5,6];
// now you need to search 5 in $arr then you need to use  in_array()
// and array_key_exists() check if key exist in array 
in_array(5);  //return true
array_key_exist("a"); // return true

答案 2 :(得分:0)

如果你想检查变量是否是数组,那么你可以简单地执行此操作

if(is_array($urarray)){}

并且如果要检查是否设置了数组

if(isset($urarray)){}

如果要检查密钥是否存在,请执行此操作

if (array_key_exists('key',$urarray)){}

如果要检查数组中是否存在值,请执行此操作

if(in_array("value", $urarray))){}

答案 3 :(得分:0)

所以正如http://php.net/所说

  

array-key-exists检查数组中是否存在给定的键或索引

     如果在数组中设置了给定键,则

返回TRUE。   key可以是数组索引可能的任何值。

     

示例#1 array_key_exists()示例

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>
  

in-array检查数组中是否存在值

     

如果在数组中找到值,则返回TRUE,否则返回FALSE。

     

示例#1 in_array()示例

<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}
if (in_array("mac", $os)) {
    echo "Got mac";
}
?>

所以基本上一个函数检查给定的数组值和给定数组键存在的其他检查

$arr = [
    `key1'=>'value1',
    'key2'=>'value2',
]

答案 4 :(得分:0)

只是我的两分钱:

<强>第一 in_array将检查数组值中给定参数的存在,这意味着如果搜索关联数组,它将忽略数组键。

<强>第二 in_array接受第三个参数(TRUE或FALSE,默认为FALSE)以使用严格类型比较。如果省略此参数,则会发生以下情况:

in_array(0,[false]) => true (0 is coerced to boolean for loose comparison)
in_array(1,['1 person']) => true ('1 person' is coerced as numeric until the first non numeric character)
in_array('',[null]) => true (again, string is coerced).

<强>第三 您可以检查数组是否包含另一个数组:

in_array([1,2],[[1,2], [3,4]]) => true

<强>四 array_key_exists将在数组键中搜索。如果数组是非关联的,则每个元素的数字索引是键:

array_key_exists(0,[1,2,3]) => true (there is an element at index 0)

但是,通常的情况是搜索字符串键:

array_key_exists('two',['one'=>1, 'two'=>2]) => true (there is an element with key 'two')

比较不是真的严格,这意味着

array_key_exists(0,['0'=>1, 'two'=>2]) => true

但这是explained in the documentation。如果数组键是仅包含数字(可选地,带有小数分隔符),布尔值或浮点数的字符串,则它们被强制转换为数字。 NULL被转换为空字符串。所以键可能是整数或字符串。除了隐式转换之外,以下内容为假:

array_key_exists(1,['1 person'=>1, 'two'=>2]) => false

最后in_array对数组内容执行顺序扫描,而array_key_exists执行对哈希表的搜索。这意味着无论您要搜索的数组的大小如何,后者的性能都是恒定的,而in_array速度与数组大小成正比。所以如果你正在做

in_array('one', array_keys(['one'=>1, 'two'=>2]))

你真的真的应该做

array_key_exists('one', ['one'=>1, 'two'=>2])