gpt4 book ai didi

php - 使用一个数组过滤另一个数组

转载 作者:行者123 更新时间:2023-12-04 05:02:42 25 4
gpt4 key购买 nike

我只是想知道 php 是否有内置函数来根据另一个数组的键过滤数组?

数组 1 - 是所有用户及其基本信息的列表

数组 2 - 包含带有用户 ID 的 session 时间表

例如

array 1 [0]([user_id], [name], [age], [contact]), 
[1]([user_id], [name], [age], [contact])
etc.

array 2 [0]([user_id], [time], [date], [place])
[1]([user_id], [time], [date], [place])

有没有办法过滤数组 1,使其只包含与数组 2 中的 [user_id] 对应的行。

我知道我可以使用循环和自定义函数来实现这一点,但是我只是想看看是否有一种简单的方法。

谢谢

最佳答案

array_intersect_key($array1, $array2)

PHP Manual

代码:
$array1 = array('user1'=> array('name'=>'name1','age' => 'age1'),
'user2'=> array('name'=>'name2','age' => 'age2'),
'user3'=> array('name'=>'name3','age' => 'age3'));

//array with key to search for
$array2 = array('user2'=> array('time'=>'time2','date' => 'date2'));
echo '<pre>';
print_r(array_intersect_key($array1,$array2));
echo '</pre>';

o/p:

Array
(
[user2] => Array
(
[name] => name2
[age] => age2
)

)

编辑:

啊有你的问题。如果您想按照上述结构操作给定的数组,然后应用 array_intersect_key(),您可以这样做:
function compare($key1,$key2){
global $array1,$array2;

if($array1[$key1]['userid'] == $array2[$key2]['userid'])
return 0;
if($array1[$key1]['userid'] > $array2[$key2]['userid'])
return 1;
else
return -1;
}

$array1 = array(array('userid'=>'user1','name'=>'name1','age' => 'age1'),
array('userid'=>'user2','name'=>'name2','age' => 'age2'),
array('userid'=>'user3','name'=>'name3','age' => 'age3'));

//array with key to search for
$array2 = array(array('userid'=>'user2','time'=>'time2','date' => 'date2'));

echo '<pre>';
print_r(array_intersect_ukey($array1,$array2,'compare'));
echo '</pre>';

o/p:
====
Array
(
[1] => Array
(
[userid] => user2
[name] => name2
[age] => age2
)

)

关于php - 使用一个数组过滤另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15932862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com