Поиск массива для соответствующей строки - PullRequest
2 голосов
/ 17 августа 2010

Я ищу, чтобы проверить, существует ли строка в виде значения массива в массиве, возможно ли это и как мне это сделать с PHP?

Ответы [ 7 ]

8 голосов
/ 17 августа 2010

Если вы просто хотите узнать, существует ли он, используйте 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
3 голосов
/ 17 августа 2010

Вы можете использовать функцию PHP in_array, чтобы увидеть, существует ли она, или 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
1 голос
/ 17 августа 2010

Кстати, хотя вам, вероятно, следует использовать либо in_array, либо 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;
       }
   }

?>

Я знаю, что глупо делать ручной поиск, чтобы найти строку - и это так - но вы можете однажды захотеть сделать более сложные вещи с массивами, так что полезно знать, как на самом деле получитьна каждой паре $ ключ-$ значение.

1 голос
/ 17 августа 2010
0 голосов
/ 17 августа 2010

Скажем, у нас есть этот массив:

<?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);
?>

Также простое правило для порядка аргументов в этих функциях таково: «иголка, затем стог сена»; то, что вы ищете, должно быть первым, а то, что вы ищете - вторым.

0 голосов
/ 17 августа 2010

Функция array_search делает именно то, что вы хотите.

$index = array_search("string to search for", $array);
0 голосов
/ 17 августа 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...