我的问题是:
我有一个名为$ 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)但这不适用于这种情况。
答案 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];
}
}