PHP等于foreach循环中的箭头运算符


PHP equals arrow operator in a foreach loop

可能重复:
$k=>foreach中的v($ex为$k=>$v(的平均值?

我正在努力理解这意味着什么:

foreach($this->domains as $domain=>$users) {  
// some code...
}

我知道$this->domainsforeach将对其进行索引的数组。但是as $domain=>$users是什么意思?我只见过在数组中使用=>运算符来设置(键、值(对。该类有一个名为$domain的成员,但我认为它将作为$this->domain访问。

=>运算符指定一个关联。因此,假设$this->domains是一个数组,$domain将是关键字,$users将是值。

<?php
$domains['example.com'] = 'user1';
$domains['fred.com'] = 'user2';
foreach ($domains as $domain => $user) {
    echo '$domain, $user'n';
}

输出:

example.com, user1
fred.com, user2

(在您的示例中,$users可能是一个用户数组(;

这样想:

foreach($this->domains as $key=>$value) {

它将遍历$this->domains作为键/值对返回的关联数组中的每个元素。将在$domain中,$users中。

为了帮助您理解,您可以将这行代码放在foreach循环中:

echo $domain, " => ", $users;

读取每个

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

第一种形式在array_expression给定的数组上循环。在每个循环中,当前元素的值被分配给$value内部数组指针提前了一个(因此在下一个循环中,您将正在查看下一个元素(。

第二个表单执行相同的操作,只是当前元素的key将在每个循环中分配给变量$key。

$domain这里是一个局部变量,包含数组中当前项的键。如果你的阵列是:

$ages = array("dad" => 31, "mom" => 35, "son" => 2);

然后

foreach($ages as $name=>$age) 
{  
   // prints dad is 32 years old, mom is 35 years old, etc
   echo "$name is $age years old"
}

在循环体中,引用$name将指代当前密钥,即"爸爸"、"妈妈"或"儿子"。$age是指我们在当前密钥中存储的年龄。

假设它将作为$this->域访问。

你是对的,这里只有$domain是局部变量。您需要$this->domain来获取成员变量。