【问题标题】:syntax for foreach in phpphp中foreach的语法
【发布时间】:2014-05-15 03:58:30
【问题描述】:

这个语法在php中是什么意思

foreach ( $meta as $t => $data )

上面的 $t => $data 是什么意思。

因为 foreach 基本上是(来自 w3school 的示例)

  <?php
  $colors = array("red","green","blue","yellow");
  foreach ($colors as $value)
    {
    echo "$value <br>";
    }
  ?> 

上面的例子$value代表$t =&gt; $data

$colors代表$meta

数组$meta如下

    $meta = Array(
    'facebook' => Array(
      'title'   => 'og:title',
      'type'   => 'og:type',
      'url'   => 'og:url',
      'thumbnail'  => 'og:image',
      'width'   => 'og:image:width',
      'height'  => 'og:image:height',
      'sitename'  => 'og:site_name',
      'key'   => 'fb:admins',
      'description' => 'og:description'
    ),
    'twitter' => Array(
      'card'   => 'twitter:card',
      'description' => 'twitter:description',
    )
      );

那么什么是$t,什么是$data

如果我想在 'facebook' 中获取 'title' 作为单独的键,该怎么做。 IE。会

  $t => $data => $final work

  $t = facebook or twitter
  $data = title etc
  $final = og:title etc

【问题讨论】:

  • $t => $data 表示像数组 $key=>$value
  • $t 代表数组的键。阅读manual了解更多详情。
  • 不大于等于符号
  • @SanthoshYedidi - 不。它有不同的含义。
  • 坦率地说,你最好找个地方other 比 w3schools 学习 PHP。实际的PHP manual 非常有用;它包含几乎所有内容的示例,包括foreach

标签: php foreach


【解决方案1】:

如果您使用foreach,它会循环遍历数组的项目。基本语法是:

foreach ($array as $item) {
  // first loop:  $item=foo
  // second loop: $item=bar
}

你可以使用扩展语法

foreach ($array as $key => $item) {}

这允许您在$key 变量中获取项目的密钥。例如:

$array = array('foo', 'bar');
foreach ($array as $key => $item) {
  // first loop:  $key=0, $item=foo
  // second loop: $key=1, $item=bar
}

$array 不包含键,所以在$key 变量中你有数字(以0 开头)。

如果定义了键(关联数组),$key 将采用定义的键值:

$array = array('key1' => 'foo', 'key2' => 'bar');
foreach ($array as $key => $item) {
  // first loop:  $key=key1, $item=foo
  // second loop: $key=key2, $item=bar
}

【讨论】:

  • 你使用的是$key = $item,那么$key => $item有什么区别
  • @SanthoshYedidi 这是一个错误,抱歉 - 我已经编辑了我的答案。
  • 重新检查我的问题。我已经展示了带有 2 个嵌套的数组。代码会是什么
【解决方案2】:

$t => $data 表示

$t - 索引(键)

$data - 值

【讨论】:

  • 没错,但我猜索引更常用的术语是键,键 => 值。
  • 查看我编辑的问题。如果数组是嵌套数组怎么办,我们可以得到多个键吗
  • 并非毫无意义。对于懂任何语言的人来说,这已经足够清楚了。 ;) 但我们的 OP 不是这样的..
  • @SanthoshYedidi 很明显,foreach 将循环数组内容,如果循环示例数组 $t 应包含其键,而 $data 将包含数组
【解决方案3】:

阅读此http://www.php.net/manual/en/control-structures.foreach.php,注意示例。

/* foreach example 3: key and value */

$a = array(
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "seventeen" => 17
);

foreach ($a as $k => $v) {
    echo "\$a[$k] => $v.\n";
}

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2\n";
    }
}

PS:如果您使用 php 编码,请阅读官方手册而不是“全能站点”。

添加

$a = array(
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "seventeen" => 17
);

foreach ($a as $k => $v) {
    echo "$k => $v";
    // will show
    // one => 1two => 2three => 3
}

foreach ($a as $v) {
    echo "$v";
    // will show 
    // 12317
}

所以,如果我们使用 $k(在我们的 foreach() 中),我们就有了“key”名称。在 $v 中,我们总是有“价值”。

添加

    $meta = Array(
        'facebook' => Array(
            'title' => 'og:title',
            'type' => 'og:type',
            'url' => 'og:url',
            'thumbnail' => 'og:image',
            'width' => 'og:image:width',
            'height' => 'og:image:height',
            'sitename' => 'og:site_name',
            'key' => 'fb:admins',
            'description' => 'og:description'
        ),
        'twitter' => Array(
            'card' => 'twitter:card',
            'description' => 'twitter:description',
        )
    );

    foreach ($meta as $sKey => $aValue) {
        // $sKey == 'facebook'
        // $aValue = array()
        // $aValue['title'] == 'og:title' 

        foreach ($aValue as $sKeyInner => $sValue) {
            // $sKeyInner == 'title'
            // $sValue == 'og:title'
        }
    }

就这样,我放弃了。呵呵

【讨论】:

  • 逐字复制文档不是答案。两者都不是链接到它。
  • 这是所有语言的基本内容。如果没有手册中的示例,您如何描述它?心灵感应?它在 ANY php for dummy (book) 中描述,如果 TS 没有读过这个我们如何描述它?
  • 我知道您只是想帮助 OP,但如果您打算做的只是将他们指向文档,最好发表评论。
【解决方案4】:

此语法允许您遍历所有项目,并且还可以方便地使用数组的键。

看看the documentation,这个语法最好解释如下:

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

...[此语法] 将在每次迭代时将当前元素的键额外分配给 $key 变量。

在您的示例中,键将是数组中的元素索引。

【讨论】:

    【解决方案5】:

    在您的示例中,这意味着 $meta 是一个数组, $t 是数组键, $data 是键的值。 例如,$t 可能是 3 并且 $data "yellow"

    【讨论】:

      【解决方案6】:

      php中有两种数组

      1. 普通数组
      2. 关联数组

      普通数组:

       <?php
            $colors = array("red","green","blue","yellow");
            foreach ($colors as $value)
              {
              echo "$value";   // prints  red,green...
              }
            ?> 
      

      对于关联数组:

      例如:数组([0] => 数组([Bookcode] => 124 [Bookname] => asd) [1] => 数组([书码] => 125 [书名] => asd) )

      <?php 
      foreach($arr as $key => $val)
              {
                 echo $key;             //prints--> 124
                 echo $val;             //prints -->asd
              }
      
      ?>
      

      【讨论】:

        猜你喜欢
        • 2017-09-27
        • 2019-08-13
        • 1970-01-01
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-13
        • 1970-01-01
        相关资源
        最近更新 更多