匹配数组的多个值

时间:2012-04-11 18:26:46

标签: php arrays if-statement foreach

我的问题是:

我有一个名为$ ownerArray的数组,另一个数组需要检查,如果两个数组中都存在一个键,则显示匹配键的值。 $ ownerArray由数据库填充,因此我不能在if语句中编写ir语句。

$ ownerArray将如下所示:

$ownerArray = array(0 =>'Name0',1 =>'Name1',2 =>'Name2',3 =>'Name3');

然后我有另一个名为$ Users的数组,它具有不同数量的值,具体取决于用户选择的内容,因此$ Users可能如下所示:

$Users = '1,2'

或者像这样:

$Users = '1,3'

$用户永远不会相同。

但我需要$ ownerArray的$值来显示$ Users的任何值整数是否与$ ownerArray的任何$键匹配

示例:

foreach($ownerArray as $key => $value) 
            { 
                if(in_array($key,array($Users)))
                {
                    print $value; 
                } 
            }

此方法在第一场比赛时停止并显示正确的名称。如果更多值匹配,则循环不会继续打印。

我正在寻找的是,如果$ Users ='1,3',我的for循环将打印$ ownerArray中的Name1和Name3。

感谢您的帮助!

ps我知道我可以使用if($ key == 1 || $ key == 2)但这不适用于这种情况。

3 个答案:

答案 0 :(得分:4)

$merged = array_flip(array_intersect(array_flip($owners), explode(',', $users)));

答案 1 :(得分:1)

这样的事情可以起作用

<?php

$ownerArray = array(0 =>'Name0',1 =>'Name1',2 =>'Name2',3 =>'Name3');
$users = explode(',','1,2');

if(count($users) > 0){
    foreach($users as $user){
        if($key = array_search($user,$ownerArray)){
            echo $key;
        }
    }
}


?>

答案 2 :(得分:0)

只是颠倒你的逻辑。实际上,您希望循环访问用户,并在所有者数组中存在某些内容,而不是相反。 (如果这段代码稍微关闭,请道歉,但是你明白这一点。)

foreach($Users as $value)
{
  if(in_array($value,array($ownerArray)))
  {
    print $ownerArray[$value]; 
  }
}