如何检查数组值是否存在?

如何检查 $something['say']的值是 'bla'还是 'omg'

$something = array('say' => 'bla', 'say' => 'omg');
495291 次浏览

使用指令 if

if(isset($something['say']) && $something['say'] === 'bla') {
// do something
}

顺便说一下,您将使用键 say分配一个值两次,因此您的数组将导致一个只有一个值的数组。

您可以使用 PHP In _ array函数

if( in_array( "bla" ,$yourarray ) )
{
echo "has bla";
}

检查是否定义了索引: isset($something['say'])

首先一个关联数组只能定义一次密钥所以这个数组永远不会存在。否则,只需使用 in_array()确定该特定数组元素是否位于可能的解决方案数组中。

您可以使用 ()或有时甚至更好的 Array _ key _ vis ()(文档解释了差异)来测试一个数组是否完全具有某个元素。如果您不能确定数组中是否有索引为‘ say’的元素,那么应该首先测试该元素,否则可能会得到‘ police: unDefinition index... .’消息。

至于测试元素的值是否等于一个字符串,你可以使用 = = 或(有时更好)标识符 ===,它不允许 杂耍类型杂耍类型杂耍

if( isset($something['say']) && 'bla'===$something['say'] ) {
// ...
}
<?php
if (in_array('your_variable', $Your_array)) {
$redImg = 'true code here';
} else {
$redImg = 'false code here';
}
?>

只需使用 PHP 函数 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()

$search_array = array('user_from','lucky_draw_id','prize_id');


if (in_array('prize_id', $search_array)) {
echo "The 'prize_id' element is in the array";
}

输出如下: The 'prize_id' element is in the array


使用: array_key_exists()

$search_array = array('user_from','lucky_draw_id','prize_id');


if (array_key_exists('prize_id', $search_array)) {
echo "The 'prize_id' element is in the array";
}

没有输出


总之,array_key_exists()不适用于简单的数组。它只用于查找数组键是否存在。使用 in_array()代替。

下面是更多的例子:

<?php
/**++++++++++++++++++++++++++++++++++++++++++++++
* 1. example with assoc array using in_array
*
* IMPORTANT NOTE: in_array is case-sensitive
* in_array — Checks if a value exists in an array
*
* DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
*++++++++++++++++++++++++++++++++++++++++++++++
*/
$something = array('a' => 'bla', 'b' => 'omg');
if (in_array('omg', $something)) {
echo "|1| The 'omg' value found in the assoc array ||";
}


/**++++++++++++++++++++++++++++++++++++++++++++++
* 2. example with index array using in_array
*
* IMPORTANT NOTE: in_array is case-sensitive
* in_array — Checks if a value exists in an array
*
* DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
*++++++++++++++++++++++++++++++++++++++++++++++
*/
$something = array('bla', 'omg');
if (in_array('omg', $something)) {
echo "|2| The 'omg' value found in the index array ||";
}


/**++++++++++++++++++++++++++++++++++++++++++++++
* 3. trying with array_search
*
* array_search — Searches the array for a given value
* and returns the corresponding key if successful
*
* DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
*++++++++++++++++++++++++++++++++++++++++++++++
*/
$something = array('a' => 'bla', 'b' => 'omg');
if (array_search('bla', $something)) {
echo "|3| The 'bla' value found in the assoc array ||";
}


/**++++++++++++++++++++++++++++++++++++++++++++++
* 4. trying with isset (fastest ever)
*
* isset — Determine if a variable is set and
* is not NULL
*++++++++++++++++++++++++++++++++++++++++++++++
*/
$something = array('a' => 'bla', 'b' => 'omg');
if($something['a']=='bla'){
echo "|4| Yeah!! 'bla' found in array ||";
}


/**
* OUTPUT:
* |1| The 'omg' element value found in the assoc array ||
* |2| The 'omg' element value found in the index array ||
* |3| The 'bla' element value found in the assoc array ||
* |4| Yeah!! 'bla' found in array ||
*/
?>

这里是 强 > PHP DEMO

如果只是检查,in _ array ()是可以的,但是如果需要检查一个值是否存在并返回相关的键,那么 array _ search 是一个更好的选项。

$data = [
'hello',
'world'
];


$key = array_search('world', $data);


if ($key) {
echo 'Key is ' . $key;
} else {
echo 'Key not found';
}

这将打印“键是1”

你可使用:

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

In _ array 的另一个用法 使用数组作为指针的 in _ array ()

<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');


if (in_array(array('p', 'h'), $a)) {
echo "'ph' was found\n";
}


if (in_array(array('f', 'i'), $a)) {
echo "'fi' was found\n";
}


if (in_array('o', $a)) {
echo "'o' was found\n";
}
?>

假设您使用的是一个简单的数组

也就是说。

$MyArray = array("red","blue","green");

您可以使用这个函数

function val_in_arr($val,$arr){
foreach($arr as $arr_val){
if($arr_val == $val){
return true;
}
}
return false;
}

用法:

val_in_arr("red",$MyArray); //returns true
val_in_arr("brown",$MyArray); //returns false