【问题标题】:PHP equals arrow operator in a foreach loop [duplicate]PHP等于foreach循环中的箭头运算符[重复]
【发布时间】:2011-10-11 20:21:14
【问题描述】:

可能重复:
What does $k => $v in foreach($ex as $k=>$v) mean?

我试图理解这意味着什么:

foreach($this->domains as $domain=>$users) {  

// some code...

}

我知道$this->domainsforeach 将索引的数组。但是as $domain=>$users 是什么意思?我只看到在数组中使用=> 运算符来设置(键,值)对。该类有一个名为$domain 的成员,但我假设它会以$this->domain 的身份访问。

【问题讨论】:

    标签: php arrays foreach


    【解决方案1】:

    => 运算符指定一个关联。所以假设$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 可能是一组用户);

    【讨论】:

      【解决方案2】:

      这样想:

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

      它将逐步遍历由$this-&gt;domains 返回的关联数组中的每个元素作为键/值对。 key 将在$domain 中,value 将在$users 中。

      为了帮助您理解,您可以将此行放入您的 foreach 循环中:

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

      【讨论】:

        【解决方案3】:

        阅读foreach

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

        第一种形式循环遍历由array_expression 给出的数组。在各个 循环,当前元素的值被赋值给 $value 并且 内部数组指针前移 1(所以在下一个循环中,您将 正在查看下一个元素)。

        第二种形式做同样的事情,除了当前元素的 key 将在每个循环中分配给变量 $key。

        【讨论】:

          【解决方案4】:

          $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 将引用当前键,即“dad”、“mom”或“son”。 $age 指的是我们上面存储的当前密钥的年龄。

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

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

          【讨论】:

            猜你喜欢
            • 2019-08-06
            • 2019-05-28
            • 1970-01-01
            • 2012-05-23
            • 1970-01-01
            • 1970-01-01
            • 2019-07-20
            • 2021-12-05
            • 2011-06-24
            相关资源
            最近更新 更多