Выбор ключа массива в PHP - PullRequest
0 голосов
/ 17 марта 2012

Я искал Google и документы по PHP, но пока не нашел решения для этого. Например. Предположим, я хочу выполнить strstr () для всех ключей массива, чтобы определить, какие ключи наиболее близки к тому, что я ищу, например:

for($i=0;$i<count($array);$i++) {
   if(@strstr(key($array[$i]), "$search")) {
     print "Found: ". key($array[$i]). "<br>";
   }
 }

«ключ ($ array [$ i])» - это заполнитель для любой функции или средства, необходимых для выбора ключей массива в качестве элементов для выполнения strstr () над.

Любая помощь приветствуется искренне.

Ответы [ 4 ]

2 голосов
/ 17 марта 2012

Используйте foreach для итерации по Ключ, Значение Пара.

foreach($array as $key=>$value) {
   if(@strstr($key, "$search")) {
     print "Found: ". $key. "<br>";
   }
 }

Дополнительная справка: http://php.net/manual/en/control-structures.foreach.php

Обновление для ответа на комментарий:

вы можете использовать

array_keys - вернуть все ключи или подмножество ключей массива

http://php.net/manual/en/function.array-keys.php

1 голос
/ 17 марта 2012

Это будет сделано ...

$found = array_filter(
                     array_keys($array), 
                     function($key) use ($search) {
                         return strpos($key, $search) !== FALSE;
                     });

CodePad .

$found будет массивом всех ключей, которые содержат подстроку, которая являетсясодержится в $search.

Если вы просто ищете наличие строки внутри другой, используйте strpos().

1 голос
/ 17 марта 2012
foreach ($array as $key => $value)
{
    if(strstr($key, $search))
    {
         print "Found: ". $key. "<br>";
    }
}
0 голосов
/ 17 марта 2012

Другой вариант - вытащить нужные клавиши за один шаг, например, используя preg_grep().

$keys = preg_grep('/'.preg_quote($search, '/').'/', array_keys($array));

foreach ($keys as $key) {
    echo "Found $key<br>";
}
...