【问题标题】:Matching multiple values against an array将多个值与数组匹配
【发布时间】:2012-04-24 02:27:40
【问题描述】:

我的问题是:

我有一个名为 $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) 但这不适用于这种情况。

【问题讨论】:

    标签: php arrays if-statement foreach


    【解决方案1】:
    $merged = array_flip(array_intersect(array_flip($owners), explode(',', $users)));
    

    【讨论】:

    • 我一直在做这种事情。 +1
    • $merged=array_flip(array_intersect(array_flip($owners),explode(',',$user))); 无间隔 FTW
    • LMOA 这是最直接最容易实现的答案。你知道你很好
    【解决方案2】:

    这样的东西可以工作

    <?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;
            }
        }
    }
    
    
    ?>
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-04-24
        • 1970-01-01
        • 2020-05-29
        • 1970-01-01
        • 2021-03-30
        • 2021-10-05
        • 1970-01-01
        • 2022-01-17
        • 2016-06-26
        相关资源
        最近更新 更多