首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP两次回显特定数组项。

PHP两次回显特定数组项。
EN

Stack Overflow用户
提问于 2017-12-17 11:23:29
回答 5查看 1.8K关注 0票数 0

我在teamtreehouse.com中学习了PHP基础课程,在本课程中我学习了PHP循环。关于PHP循环,我编写了这段代码,运行良好:

代码语言:javascript
运行
复制
<?php

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

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

X 是

然而,在以这种方式迭代foreach元素之后,当我试图针对某个特定项时:

代码语言:javascript
运行
复制
foreach ($items as $item) {
    echo $items['item1'];
}

输出是XX,而不是X

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-12-17 11:57:57

有两种不同的事情正在发生:

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

这个数组有两个项:

代码语言:javascript
运行
复制
$items = array(
    'item1' => 'X',
    'item2' => 'Y',
);

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

代码语言:javascript
运行
复制
foreach ($items as $item) {
    echo $item . "<br>";
}

现在您正在使用$item,它是foreach中的当前项。在本例中,这将为每次迭代打印两个不同的值:"X“和"Y”。

现在来看一下代码的第二部分:

代码语言:javascript
运行
复制
foreach ($items as $item) {
    echo $items['item1'];
}

现在,您将在每次迭代中使用$items['item1'];。这意味着您指的是$items中具有item1键的项,其值为"X“。这就是为什么你要得到"X“和"X”。

如果您想从$items中获取一个项目,您可以这样做:

$items["item1"];

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

代码语言:javascript
运行
复制
foreach ($items as $key => $item) {
    if ($key === "item1") {
        echo $item;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-12-17 11:40:55

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

访问数组中第一个元素的代码是$items['item1'];,它将在打印/回显时输出这个键的值(item1),即X

由于foreach函数迭代了两次,所以它在其中执行了两次代码,在您的示例中是打印值X (因此在迭代结束时打印两次)

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

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

代码语言:javascript
运行
复制
<?php

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

echo $items['item1'];

它将具有以下输出

代码语言:javascript
运行
复制
x

只有在需要遍历所有数组以执行某些功能、访问特定元素甚至只是搜索时,您才需要使用foreach,因为在php中有许多更好的数组函数。

票数 1
EN

Stack Overflow用户

发布于 2017-12-17 11:29:24

对于每个项,因为对象中有两个项(循环运行了两次),所以您要回显第一个项。所以它才会显示"xx“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47854586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档