PHP - Как я могу узнать, существует ли значение в массиве при сравнении? - PullRequest
0 голосов
/ 08 августа 2009

У меня есть массив, который выглядит так:

Array
(
    [0] => Array
        (
            [0] => 1
            [id] => 1
        )

    [1] => Array
        (
            [0] => 2
            [id] => 2
        )
)

Что я хотел бы сделать, это сравнить значение int с тем, что находится в поле значения id. Так что, если бы я передал, скажем, 1, я бы хотел иметь функцию для сравнения. Я думал in_array, но я не могу заставить это работать. Кто-нибудь знает, какую функцию я могу использовать для этого?

Спасибо.

Ответы [ 2 ]

1 голос
/ 08 августа 2009

Не совсем понятно, каким должен быть результат выполнения функции, однако я предполагаю, что вам нужен ключ массива, содержащий искомый идентификатор, в этом случае следующая функция найдет что.

<?php
function get_key($array, $id) {
  foreach ($array as $key => $unit) {
   if ($unit['id'] == $id) {
     return $key;
   }
  }
}
1 голос
/ 08 августа 2009

Попробуйте что-то вроде этого:

$needle = 1;
$found = false;
foreach ($array as $key => $val) {
    if ($val['id'] === 1) {
        $found = $key;
        break;
    }
}
if ($found !== false) {
    echo 'found in $array['.$found.']';
}

Так как вы хотите что-то более компактное:

$needle = 1;
array_filter($array, create_function('$val', 'return $val["id"] !== '.var_export($needle, true).';'))

Это отфильтрует все элементы, значение которых id не равно 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...