我正在尝试将$badArray
与数组$companyArray
进行比较,并创建一个名为$goodArray
的新数组。如果$companyArray
包含来自Company_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 :(得分:2)
您应该查看http://php.net/in_array和http://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)。
答案 1 :(得分:1)
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 )