PHP-比较和过滤两个不同维度的数组
我正在尝试过滤两个数组,以从mysql数据库中获得具有用户ID的最终结果 我有两个阵列第一个: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
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感谢您的评论。我们将在将来牢记这一点。