3

我的问题是:

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

$ownerArray 将如下所示:

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

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

$Users = '1,2'

或像这样:

$Users = '1,3'

$Users 永远不会相同。

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

例子:

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) 但这不适用于这种情况。

4

3 回答 3

4
$merged = array_flip(array_intersect(array_flip($owners), explode(',', $users)));
于 2012-04-11T18:43:26.807 回答
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;
        }
    }
}


?>
于 2012-04-11T18:35:00.343 回答
0

只是颠倒你的逻辑。您实际上是想循环访问您的用户,如果它们存在于所有者数组中,则打印一些东西,而不是相反。(抱歉,如果此代码略有偏差,但您明白了。)

foreach($Users as $value)
{
  if(in_array($value,array($ownerArray)))
  {
    print $ownerArray[$value]; 
  }
} 
于 2012-04-11T18:35:24.603 回答