array_search具有两个属性的多维数组

问题描述 投票:0回答:2

假设我们有以下二维数组:

$userdb = array(
    array(
        'uid' => '100',
        'name' => 'Sandra Shush',
        'pic_square' => 'urlof100'
    ),
    array(
        'uid' => '5465',
        'name' => 'Stefanie Mcmohn',
        'pic_square' => 'urlof100'
    ),
    array(
        'uid' => '40489',
        'name' => 'Michael',
        'pic_square' => 'urlof40489'
    )
);

如果我想搜索可以使用的键(在此示例中为0):

$key = array_search('100', array_column($userdb, 'uid'));

但是如果我想获取应该与特定值匹配的两个属性的密钥,该怎么办?就像我要搜索具有uid = '100' AND name = 'Sandra Shush'

的键一样
php arrays search
2个回答
1
投票

[例如,仅在值上使用foreach可能是最简单的此函数将返回与array_search类似的值:

function find_user($userdb, $attributes) {
    foreach ($userdb as $key => $user) {
        if (empty(array_diff($attributes, $user))) return $key;
    }
    return false;
}

echo find_user($userdb, array('name' => 'Stefanie Mcmohn', 'uid' => 5465));

输出

1

Demo on 3v4l.org


0
投票

为什么不遍历数组?

$foundKey = false;
foreach($userdb as $key => $user){
   if($user['uid']=='100' && $user['name '] == 'Sandra Shush'){
        $foundKey = $key;
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.