0

假设我有一个数组

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

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

in_array("nyc", $array);

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

谢谢你。

4

2 回答 2

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。有了所有这些,您就可以像上面的示例一样使用闭包来处理您的列表。

您也可以拥有对象,而不是在数组中使用关联数组。对象更重,需要初始化和其他东西,所以将它们用于微小的静态(硬编码)列表是很奇怪的。但是当您的数据结构增长并且您希望确保每个列表项都具有特定属性时,它们可能会派上用场(类的构造函数可以确保所有内容都已初始化)。但好在 filter、reduce 和 map 仍然可以工作。然后,“$item”将成为您的对象。

于 2012-09-29T22:06:04.517 回答
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

于 2012-09-29T22:02:33.647 回答