PHP foreach两次回送特定的数组项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP foreach两次回送特定的数组项相关的知识,希望对你有一定的参考价值。

我在teamtreehouse.com上学习了php基础课程,在本课程中我学习了PHP循环。关于PHP foreach循环,我写了这个代码,工作正常:

<?php

$items = array(
    'item1' => 'X',
    'item2' => 'Y',
);

foreach ($items as $item) {
    echo $item . "<br>";
}

X

然而,当我尝试以这种方式迭代foreach元素后定位特定项目时:

foreach ($items as $item) {
    echo $items['item1'];
}

输出是XX而不是X

我的问题是为什么我首先得到XX并且答案可以帮助我理解如何使用X提取我想要的特定值(第一个键值对的值 - foreach)。

答案

发生了两件不同的事情:

  • 为每次迭代打印数组中的当前值
  • 每次迭代按键引用相同的项目

这个数组有2个项目:

$items = array(
    'item1' => 'X',
    'item2' => 'Y',
);

现在,如果使用foreach循环数组,则可以使用以下语法:

foreach ($items as $item) {
    echo $item . "<br>";
}

现在您正在使用$item,这是foreach中的当前项目。在这种情况下,这将为每次迭代打印2个不同的值:“X”和“Y”。

现在查看代码的第二部分:

foreach ($items as $item) {
    echo $items['item1'];
}

现在,您每次迭代都使用$items['item1'];。这意味着你指的是$items中的项目,其密钥为item1,其值为“X”。这就是你得到“X”和“X”的原因。

如果你想直接从$items获得一个项目,你可以这样做:

$items["item1"];

如果你想使用foreach来获取值为“X”的项,并且你知道键是“item1”,你可以这样做:

foreach ($items as $key => $item) {
    if ($key === "item1") {
        echo $item;
    }
}
另一答案

你应该知道foreach的另一个用例:

Foreach将遍历数组中的每个元素,以及每个{key&value}元素。

您可以使用以下代码:

$items = array(
    'item1' => 'X',
    'item2' => 'Y',
);

foreach ($items as $key => $value) {
    echo $key. ":" . $value . "<br>";
}

这将打印

物品1:X

第2项:Y

另一答案

foreach函数遍历数组的次数与数组中元素的数量一样多,在您的示例中,这两个元素是2(第一个元素是键item1,第二个元素是键item2)。

访问数组中第一个元素的代码是$items['item1'];,它在print / echo将输出此键的值(item1),即X

由于foreach函数迭代了两次,因此它在其中执行了两次代码,在您的情况下打印一个值X(因此在迭代结束时打印两次)

只是为了提取特定的值,你可以使用echo $items['item1']; (例如,在item1中提取值)没有foreach循环(因为你不需要遍历数组中的每个元素)

例如,您可以尝试以下代码:

<?php

$items = array(
    'item1' => 'X',
    'item2' => 'Y',
);

echo $items['item1'];

它将具有以下输出

x

你需要使用foreach,以防你需要遍历所有数组来执行某些功能,访问特定元素甚至只是搜索你不需要使用foreach,因为有很多更好的数组函数PHP。

另一答案

对于每个项目,因为对象中有两个项目(循环运行两次),您将回显第一个项目。这就是它显示“xx”的原因。

另一答案

这就是我从代码中获得XX的原因。

<?php

$items = array(
    'item1' => 'X',
    'item2' => 'Y',
);

foreach ($items as $item) {
    echo $items['item1'];
}

用表达式echo $items['item1'];,我指示循环来否定'item2'。因此,它仅处理'item1'指数中的数据,但鉴于echo$items['item1']本身的第一个值,该值打印两次:一次作为$items第一个值的变量扩展,第二个,从使用['item1']扩展其第一个价值本身。

这就是如何构建PHP的foreach函数。

为了肯定这个哲学我做了:

$items = array(
    'item1' => 'X',
    'item2' => 'Y',
    'item3' => 'Z',
);

foreach ($items as $item) {
    echo $items['item1'];   
}

得到了:XXX

以上是关于PHP foreach两次回送特定的数组项的主要内容,如果未能解决你的问题,请参考以下文章

PHP:数组——二维转一维,二维转三维,将特定的数据作为键名

片段android中的菜单项调用两次

PHP未设置嵌套数组的部分

如何在PHP的foreach循环中重复特定的迭代?

根据数组中的值取消设置特定会话项

PHP 数组遍历方法大全(foreach,list,each)