Поиск по двумерному массиву

SPavel_74100

Новичок
Есть массив $m
PHP:
Array 
(
    [0] => Array
        (
            [0] => 4
            [1] => Бизнес-центр
            [2] => 0
            [3] => 7
        )

    [1] => Array
        (
            [0] => 1
            [1] => Квартира
            [2] => 1
            [3] => 2,1
        )

    [2] => Array
        (
            [0] => 2
            [1] => Комната
            [2] => 0
            [3] => 2,1
        )

    [3] => Array
        (
            [0] => 11
            [1] => Отдельно стоящее здание
            [2] => 0
            [3] => 7
        )

    [4] => Array
        (
            [0] => 7
            [1] => Офисно-жилой комплекс
            [2] => 0
            [3] => 7
        )

    [5] => Array
        (
            [0] => 9
            [1] => Офисно-складской комплекс
            [2] => 0
            [3] => 7,10
        )

    [6] => Array
        (
            [0] => 5
            [1] => Офисное здание
            [2] => 0
            [3] => 7
        )

    [7] => Array
        (
            [0] => 3
            [1] => Пентхаус
            [2] => 0
            [3] => 2,1
        )

    [8] => Array
        (
            [0] => 10
            [1] => Первый этаж жилого дома
            [2] => 0
            [3] => 7
        )

    [9] => Array
        (
            [0] => 8
            [1] => Торгово-офисный комплекс
            [2] => 0
            [3] => 7
        )

    [10] => Array
        (
            [0] => 6
            [1] => Торгово-развлекательный комплекс
            [2] => 0
            [3] => 7
        )

)
также есть массив $idrelation
PHP:
Array 
(
    [0] => 10
    [1] => 1
Нужно оставить в массиве $m только те элементы где в [][3] входят 10 или 1

Не могу построить логику решения. Помогите плиз.
 

Beavis

Banned
Если эти данные берутся из базы, то нужно получать только нужные записи с помощью условий в запросе к базе, а не загружать всё в php и потом обрабатывать
 

SPavel_74100

Новичок
PHP:
function even($var) {
  $i = 0;
  $idrelation_arr = explode(',', '10,1');
  foreach($idrelation_arr as $id_set)
  {
    $temp = explode(',', $var[3]);
    if(in_array($id_set, $temp)) $i++;
  }
  if($i > 0) return true;

}

print_r(array_filter($m, "even"));
Верное решение?

Если да, то как такая конструкция поведет (в плане быстродействия), когда в $m будет наприм. > 10000?
Есть ли возможность передавать '10,1' в even или придется
PHP:
function even($var) {
  global $dert
  $idrelation_arr = explode(',', $dert); 
}
?
 

AmdY

Пью пиво
Команда форума
SPavel_74100
если php 5.3 можно использовать замыкание и передавать параметр через use.
 
Сверху