Я ищу, чтобы проверить, существует ли строка в качестве значения массива в массиве, и как мне это сделать с PHP?
Если вы просто хотите узнать, существует ли она, используйте in_array () , например:
$exists = in_array("needle", $haystack);
Если вы хотите узнать его соответствующий ключ, используйте array_search () , например:
$key = array_search("needle", $haystack); // will return key for found value, or FALSE if not found
Вы можете использовать функцию PHP array_search
чтобы узнать, существует ли она, или array_search
чтобы узнать, где она находится.
Пример:
$a = array('a'=>'dog', 'b'=>'fish'); in_array('dog', $a); //true in_array('cat', $a); //false array_search('dog', $a); //'a' array_search('cat', $a); //false
Php inArray ()
Кстати, хотя вы, вероятно, должны использовать либо array_search
либо array_search
как предлагают эти прекрасные джентльмены, просто чтобы вы знали, как выполнять ручной поиск, если вам когда-либо понадобится сделать это, вы также можете это сделать:
<?php // $arr is the array to be searched, $needle the string to find. // $found is true if the string is found, false otherwise. $found = false; foreach($arr as $key => $value) { if($value == $needle) { $found = true; break; } } ?>
Я знаю, что глупо делать ручной поиск, чтобы найти строку – и это так, но вы можете когда-нибудь захотеть делать более сложные вещи с помощью массивов, поэтому хорошо знать, как реально получить каждую пару $ key- $ value ,
Функция array_search
выполняет именно то, что вы хотите.
$index = array_search("string to search for", $array);
Скажем, у нас есть этот массив:
<?php $array = array( 1 => 'foo', 2 => 'bar', 3 => 'baz', ); ?>
Если вы хотите проверить, находится ли элемент «foo» в массиве, вы сделаете это
<?php if(in_array('foo', $array)) { // in array... }else{ // not in array... } ?>
Если вы хотите получить индекс массива 'foo', вы должны сделать следующее:
<?php $key = array_search('foo', $array); ?>
Кроме того, простым правилом для порядка аргументов в этих функциях является: «игла, затем стог сена»; то, что вы ищете, должно быть первым, и то, что вы смотрите во втором.