在PHP中“ =>”是什么意思?


98

=>运算符在以下代码中是什么意思?

foreach ($user_list as $user => $pass)

该代码是PHP.net的注释。用户没有指定的值$user_list$user$pass。我通常认为这=>意味着等于或大于。

但是,我不确定它的用途,因为它没有分配。我读代码为

  1. 处理整数用户列表
  2. 这样每个用户的值等于或大于密码

以上对我来说没有意义。


我更新了答案,忘记了'array'关键字。
泰勒·卡特


@Masi错误站在我这一边。抱歉。
卡帕2012年

我会说=>为数组分配一个值,并使用键作为索引。因此,在您的情况下,称为$ user_list的数组将$ user用作索引键。foreach循环循环并为该数组中的每个元素分配值$ pass。
朱利安

Answers:


125

=>是关联数组的分隔符。在该foreach循环的上下文中,它将数组的键分配给$user,将值分配给$pass

例:

$user_list = array(
    'dave' => 'apassword',
    'steve' => 'secr3t'
);

foreach ($user_list as $user => $pass) {
    echo "{$user}'s pass is: {$pass}\n";
}
// Prints: 
// "dave's pass is: apassword"
// "steve's pass is: secr3t"

注意,这也可以用于数字索引数组。

例:

$foo = array('car', 'truck', 'van', 'bike', 'rickshaw');
foreach ($foo as $i => $type) {
    echo "{$i}: {$type}\n";
}
// prints:
// 0: car
// 1: truck
// 2: van
// 3: bike
// 4: rickshaw

22

这意味着将密钥分配给$ user并将变量分配给$ pass

分配数组时,您需要像这样

$array = array("key" => "value");

它使用相同的符号处理foreach语句中的数组。'=>'链接键和值。

根据PHP手册,“ =>”创建了键/值对。

同样,等于或大于是相反的方式:“> =”。在PHP中,大于或小于号始终位于第一个:'> =','<='。

顺便提一句,排除第二个值并不像您认为的那样起作用。不仅只给您密钥,它实际上还给您一个价值:

$array = array("test" => "foo");

foreach($array as $key => $value)
{
    echo $key . " : " . $value; // Echoes "test : foo"
}

foreach($array as $value)
{
    echo $value; // Echoes "foo"
}

1
您的最后一个示例出了点问题,因为我收到了错误消息Parse error: syntax error, unexpected T_DOUBLE_ARROW in /var/www/cha.php on line 2
莱奥波德·赫兹(LéoLéopoldHertz),2009年

糟糕,忘记添加数组关键字。试试看
泰勒·卡特

12

像“ a => b”这样的代码对于一个关联数组(某些语言,如Perl,如果我没记错的话,称它们为“哈希”)意味着,“ a”是键,而“ b”是值。

您可能至少要看一下以下文档:

在这里,您有一个名为的数组,$user_list您将对其进行迭代,以获取每一行的键$user,以及中的相应值。$pass

例如,此代码:

$user_list = array(
    'user1' => 'password1',
    'user2' => 'password2',
);

foreach ($user_list as $user => $pass)
{
    var_dump("user = $user and password = $pass");
}

将获得以下输出:

string 'user = user1 and password = password1' (length=37)
string 'user = user2 and password = password2' (length=37)

(我var_dump用来生成一个不错的输出,这有助于调试;要获得正常的输出,您可以使用echo


“等于或大于”是另外一种说法:“等于或大于”,用PHP编写,像这样;“> =”
对于从C派生的大多数语言而言,这是相同的:C ++,JAVA,PHP,...


作为一个忠告:如果你是刚刚用PHP开始,你绝对应该花一些时间(可能是几个小时,甚至半天,甚至一整天)通过手动的某些部分会:-)
这d对您有很大帮助!


6

PHP中的数组是键到值的映射:

$array = array();
$array["yellow"] = 3;
$array["green"] = 4;

如果要对数组中的每个键值对执行某项操作,则可以使用foreach控件结构:

foreach ($array as $key => $value)

$ array变量是您将使用的数组。$ key和$ value变量在循环的每次迭代中都将包含一个键-值对foreach。在此示例中,它们将首先包含“黄色”和3,然后是“绿色”和4。

如果您不关心键,则可以使用其他表示法:

foreach ($array as $value)

“ foreach”真的是运算符吗?你有资源吗?
彼得·莫滕森

从技术上讲,它是一个控制结构:php.net/manual/en/control-structures.foreach.php 我已经相应地更新了答案。
Scharrels's

4

默认情况下,PHP中的数组是关联数组(也称为字典或哈希)。如果您未明确将键分配给值,则解释器将为您静默地执行此操作。因此,您在此处得到的表达式将进行迭代$user_list,从而使键可作为$user,而值可作为$pass用作本地变量在主体中foreach


3

$user_list 是一个数据数组,当遍历时可以将其拆分为名称和值。

在这种情况下,其名称为$user,其值为$pass

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.