2014-02-25 7 views
0

$badArray을 배열 $companyArray과 비교하고 $goodArray이라는 새 배열을 만듭니다. $companyArrayCompany_Name이 포함되어 있고 $badArray 인 경우 $goodArray에 추가하지 마세요. $badArray에 1197 개의 값이 있고 $companyArray에 1410의 값이 있습니다. 두 foreach 루프를 사용하여 배열을 비교하고 있지만 어떤 이유로 $goodArray은 213 항목을 포함해야하지만 결국에는 $companyArray의 마지막 항목 만 포함해야합니다. 나는 이것이 의미가 있기를 바란다. 누군가 내가 뭘 잘못하고 있는지, 그리고 두 배열을 살펴 보는 더 좋은 방법이 있는지 말해 줄 수 있겠습니까?배열을 비교하고 값이없는 경우 새 배열을 만듭니다.

public function SortGoodFromBad($badArray, $companyArray) { 
    $goodArray = array(); 
    $i=0; 
    foreach($companyArray as $row => $value) { 
     foreach($badArray as $companyName => $companyRow) { 
      if($companyName !== $value['Company_Name']) { 
       $goodArray = array('Company Name'.$i => $value['Company_Name']); 
       $i++; 
      } else { 

      } 
     } 
    } 

    echo "<PRE>"; 
    print_r($goodArray); 
    echo "</PRE>"; 
} 
+0

시도 줄 수 HTTP : //php.net/manual/en/function.array-diff.php –

답변

2

http://php.net/in_arrayhttp://php.net/Array을 찾아야합니다. 귀하의 예를 들면, 내가 올바르게 이해할 경우 :

function SortGoodFromBad($badArray,$companyArray) { 
    $goodArray = Array(); 
    foreach ($companyArray as $row=>$value) { 
    if (!isset($badArray[$value])) $goodArray[] = $value; 
    } 
} 

내가 사용하는 변수를 사용했습니다. 문제가 생기면 print_r ($ badArray)의 처음 몇 행과 print_r ($ companyArray)의 처음 몇 행을 출력 할 수 있습니까?

+0

'$ goodArray'는 'Company_Name'을 반복하고 일치시켜야하는 다차원 배열입니다. '$ badArray'는 회사 이름이 들어있는 일반 배열 일뿐입니다. – Yamaha32088

+0

내 예는 효과가 있습니까? –

+0

'[Company_Name ']'을'$ value'에'foreach'에 추가해야만했습니다. 그렇지만 어떤 이유로 그것이 하나의 짧은 항목입니까? '$ goodArray'에는 213 개의 항목이 있어야하지만 212 개의 인덱스가있는 211 개의 항목 만 있습니다. – Yamaha32088

1

약간 늦지 만 조금 빠를 수도 있습니다. 당신은`$ goodArray = array_diff ($ companyArray, $ badArray)`처럼 사용할 수 있도록,이 두 배열의 차이를 반환 - - 당신이이

function arrayDiff($arrayFrom, $arrayAgainst){ 
    $arrayAgainst = array_flip($arrayAgainst); 

    foreach ($arrayFrom as $key => $value) { 
     if(isset($arrayAgainst[$value])) { 
      unset($arrayFrom[$key]); 
     } 
    } 
    return $arrayFrom; 
} 
// example 
$badarr=array('a','b','c'); 
$comanyarr=array('a'=>1,'d'=>2,'e'=>3,'s'=>4,'c'=>5); 

print_r(arrayDiff($comanyarr,$badarr)); //Array ([a] => 1 [d] => 2 [e] => 3 [s] => 4 [c] => 5) 
당신은 array_diff``로 보일 것입니다
관련 문제