2014-09-05 3 views
0

나는이 다차원 배열이 : 나는 배열을 통해 두 번째 수준 '고객'값이 배열의 값과 일치하는 경우 루프를 할 수 있도록하려면가 일치 PHP와 다차원 배열의 요소를 제거

[0] => Array 
    (
     [id] => 55829 
     [date] => 2014-09-05 07:00:56 
     [customer] => Engineering 
     [server] => example 
     [status] => Successful 
     [version] => 1 
    ) 

[1] => Array 
    (
     [id] => 55776 
     [date] => 2014-09-05 06:58:30 
     [customer] => Coating 
     [server] => example 
     [status] => Successful 
     [version] => 1 
    ) 

를 :

Array 
(
    [0] => Engineering 
    [1] => Painting 
) 
그때 첫 번째 배열은 다음 될 수 있도록 일치가있을 경우 완전히 해제/상위 배열을 제거 할

:

[0] => Array 
    (
     [id] => 55776 
     [date] => 2014-09-05 06:58:30 
     [customer] => Coating 
     [server] => example 
     [status] => Successful 
     [version] => 1 
    ) 
,536,913,632 10

답변

2

$records이 다차원 배열이고 $second_array에 엔지니어링/그림이 들어있는 경우 아래가 작동합니다.

<?php 
foreach($records as $key => $record) 
{ 
    if(in_array($record['customer'], $second_array)) 
    { 
     unset($records[ $key ]); 
    } 
} 
?> 
+0

촬영, 당신 12 초 나를 이길. upvote을하십시오. ;) – bzeaman

+0

고마워요. 치료를해라! :) – MikeeeGeee

0

in_array을 사용하십시오.

$array_to_filter = array(array(...)); 
$array_filter = array(...); 
foreach ($array_to_filter as $key => $value) { 
    if (in_array($value['customer'], $array_filter)) { 
     unset($array_to_filter['$key']); 
    } 
} 
0

시도 :

$types = array('Engineering', 'Painting'); 

foreach($array as $key => $v) { 
    if(in_array($v['customer'], $types)) { 
     unset($array[$key]); 
    } 
} 
0

당신은 시도 할 수 :

$arrayBlackList = array('Engineering','Painting'); 

function shouldKeep($var) 
{ 
    global $arrayBlackList; 
    return !in_array($var['customer'],$arrayBlackList); 
} 

$filtered_array = array_filter($array1, "shouldKeep"); 
0
$i = 0; 
for ($i = 0; $i <count($array1) ; $i++) { 

    if ($array1[$i]['customer'] == $array2[0] || $array1[$i]['customer'] == $array2[1]) { 

     unset($array[$i]); 

     // restart 
     $i = 0 
    } 
} 
관련 문제