使用in_array()与数组中的键和值?

时间:2012-09-29 21:59:27

标签: php arrays

假设我有一个数组

$array = array(
            'username' => "username",
            'location' => "location",
            'other' => "other");

此数组可以保存许多用户的数据,因此每个“用户名”,“位置”和“其他”字段可能有不同的值。如何使用in_array()或其他函数来确定数组中是否存在特定的用户名?因为如果用户拥有像“nyc”这样的用户名和“nyc”的位置,我会这样做

in_array("nyc", $array);

应该如何处理这样的事情?

谢谢。

2 个答案:

答案 0 :(得分:2)

为了实现我认为你想要的东西,你可以制作一组具有相同键的关联数组。

<?php
// This syntax will work only on PHP 5.4
$a=[["name"=>"john","age"=>25],["name"=>"philip","age"=>110]];
print_r(array_filter($a, function($item) {return $item["name"] === "john"; }));
?>

输出:

Array
(
    [0] => Array
        (
            [name] => john
            [age] => 25
        )

)

如果你只是想知道一个名叫John的人是否在列表中,你可以在返回的数组上使用sizeof / count。

这将允许您拥有任意数量的重复项,并且您无需指定任何键。查看函数:array_filter,array_reduce,array_map。通过所有这些,您可以使用上面的示例中的闭包来处理列表。

您也可以拥有对象,而不是在数组中使用关联数组。对象更重量级,需要初始化和东西,所以将它们用于微小的静态(硬编码)列表是怪诞的。但是当数据结构增长并且您希望确保每个列表项都具有某个属性时,它们可能会派上用场(类的构造函数可以确保所有内容都已初始化)。但好处是过滤,减少和映射仍然有效。然后“$ item”将成为您的对象。

答案 1 :(得分:0)

 $users = array( 'user_id' => array('username' => "username",
                                    'location' => "location",
                                    'other' => "other");

user_id是他们的NUMBER user_id

然后你再拨打$ users ['####'] ['username'];

IE:

 $users = array( '1' => array('username' => 'Jim',
                              'location' => 'Florida',
                               'other' => "other"),
                 '2' => array('username' => 'Jane',
                              'location' => 'Maryland',
                               'other' => "Grapes"));

然后使用array_keys()搜索其user_id