Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-比较和过滤两个不同维度的数组_Php_Arrays_Compare - Fatal编程技术网

PHP-比较和过滤两个不同维度的数组

PHP-比较和过滤两个不同维度的数组,php,arrays,compare,Php,Arrays,Compare,我正在尝试过滤两个数组,以从mysql数据库中获得具有用户ID的最终结果 我有两个阵列第一个: print_r($arr_partner_id); Array ( [0] => Array ( [id] => 335 [id_partner] => 0 ) [1] => Array ( [id] => 469 [id_partner] => 1 ) [2] => Array ( [id] => 457 [id_partner] => 1

我正在尝试过滤两个数组,以从mysql数据库中获得具有用户ID的最终结果

我有两个阵列第一个:

print_r($arr_partner_id);
Array ( 
[0] => Array ( [id] => 335 [id_partner] => 0 ) 
[1] => Array ( [id] => 469 [id_partner] => 1 ) 
[2] => Array ( [id] => 457 [id_partner] => 1 ) 
[3] => Array ( [id] => 339 [id_partner] => 0 ) 
[4] => Array ( [id] => 361 [id_partner] => 0 ) ) 
第二个:

print_r($arr_member_id);
Array ( 
[0] => 457 
[1] => 469 
[2] => 339 
[3] => 361 ) 
现在我只想将这两个id与它们的id进行比较,并删除“$arr_member_id”数组中未包含的id。这是我的“参考数组”,意味着我只需要ID(457469339361)

对于最终结果,应如下所示:

print_r($arr_partner_final_id);
Array ( 
[0] => Array ( [id] => 469 [id_partner] => 1 ) 
[1] => Array ( [id] => 457 [id_partner] => 1 ) 
[2] => Array ( [id] => 339 [id_partner] => 0 ) 
[3] => Array ( [id] => 361 [id_partner] => 0 ) ) 
我用foreach试过了

foreach ($arr_partner_id as $key => $usr_ids) {
    if($arr_partner_id[$key]['id'] ==  $arr_member_id[$key]) {
        // do something
    }   
}
但是“键”是不同的,这不应该起作用…

可能类似于:

foreach ($arr_member_id as $usr_id){
   foreach ($arr_partner_id as $partner){
     if ($usr_id == $partner['id']) {$arr_partner_final_id[]=$partner;break;
   }
}
可能是这样的:

foreach ($arr_member_id as $usr_id){
   foreach ($arr_partner_id as $partner){
     if ($usr_id == $partner['id']) {$arr_partner_final_id[]=$partner;break;
   }
}
试试这个(工作示例:)


试试这个(工作示例:)


尽可能简单,只使用一个循环遍历数组,并使用
in_array()

试试这个

for($i=0;$i<count($arr_partner_id);$i++){
  if(!in_array($arr_partner_id[$i]['id'],$arr_member_id)){
     unset($arr_partner_id[$i]);
  }
}

print_r($arr_partner_id);

for($i=0;$i使其变得简单,只使用一个循环遍历数组,并使用
in_array()

试试这个

for($i=0;$i<count($arr_partner_id);$i++){
  if(!in_array($arr_partner_id[$i]['id'],$arr_member_id)){
     unset($arr_partner_id[$i]);
  }
}

print_r($arr_partner_id);
对于($i=0;$i另一个解决方案(无显式循环):

另一种解决方案(无显式循环):


最好使用mysql本身来完成此任务。但是如果需要继续使用此函数来检查第二个数组,如下所示

foreach ($arr_partner_id as $key => $usr_ids) {
  if(in_array($usr_ids["id"], $arr_member_id)) {
    // do something
  }   
}

最好使用mysql本身来完成此任务。但是如果需要继续使用此函数来检查第二个数组,如下所示

foreach ($arr_partner_id as $key => $usr_ids) {
  if(in_array($usr_ids["id"], $arr_member_id)) {
    // do something
  }   
}

foreach
中,您将键指定为
$key1
,但在
if
语句中,您使用的是
$key
,这是问题中的一个打字错误,还是您的代码是这样的?sry是我的一个键入错误…我更正了它。在
foreach
中,您将键指定为
$key1
,但在
if
语句中,您需要修改使用
$key
,这是问题中的一个打字错误,还是您的代码是这样的?可能是我的输入错误…我会更正它。使用该解决方案,索引以“1”开头,而不是以“0”开头,因为在这种情况下,第一行受到影响…但如果第三行受到影响,则索引是(0,1,3,4)我不确定,但这可能会带来问题…嗯…第一个解决方案有这个问题..因为它删除了索引..并且应该只在与数组索引无关的情况下使用它..无论如何,我提供了第二个解决方案..这不重要…创建新数组并推送数组中存在的元素..)使用该解决方案,索引以“1”开头,而不是以“0”开头,因为在这种情况下,第一行受到影响……但如果第三行受到影响,则索引为(0,1,3,4)我不确定,但这可能会带来问题…嗯…第一个解决方案有这个问题..因为它删除了索引..并且应该只在与数组索引无关的情况下使用它..无论如何,我提供了第二个解决方案..这不重要…创建新数组并推送数组中存在的元素..)当条件满足时,内部foreach内部应该有一个中断以退出循环,这样您就不会不必要地浪费计算机周期。@Borgtex感谢您的评论。将在将来记住这一点。在满足条件时,内部foreach内部应该有一个中断以退出循环,这样您就不会不必要地浪费计算机周期。@Borgtex感谢您的评论。我们将在将来牢记这一点。