我在teamtreehouse.com中学习了PHP基础课程,在本课程中我学习了PHP循环。关于PHP循环,我编写了这段代码,运行良好:
<?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
,一个答案可以帮助我理解如何用foreach
提取我想要的特定值(第一个键值对-X
的值)。
发布于 2017-12-17 11:57:57
有两种不同的事情正在发生:
这个数组有两个项:
$items = array(
'item1' => 'X',
'item2' => 'Y',
);
现在,如果使用前程循环数组,则可以使用如下语法:
foreach ($items as $item) {
echo $item . "<br>";
}
现在您正在使用$item
,它是foreach中的当前项。在本例中,这将为每次迭代打印两个不同的值:"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;
}
}
发布于 2017-12-17 11:40:55
在您的示例中,foreach
函数遍历数组的次数与数组中的元素数一样多,即2(第一个元素具有键item1
,第二个元素具有键item2
)。
访问数组中第一个元素的代码是$items['item1'];
,它将在打印/回显时输出这个键的值(item1
),即X
。
由于foreach
函数迭代了两次,所以它在其中执行了两次代码,在您的示例中是打印值X
(因此在迭代结束时打印两次)
仅为了提取特定的值,您可以使用echo $items['item1']
;(例如,在item1
中提取值),而不需要foreach循环(因为您不需要遍历数组中的每个元素)
例如,您可以尝试以下代码:
<?php
$items = array(
'item1' => 'X',
'item2' => 'Y',
);
echo $items['item1'];
它将具有以下输出
x
只有在需要遍历所有数组以执行某些功能、访问特定元素甚至只是搜索时,您才需要使用foreach
,因为在php中有许多更好的数组函数。
发布于 2017-12-17 11:29:24
对于每个项,因为对象中有两个项(循环运行了两次),所以您要回显第一个项。所以它才会显示"xx“。
https://stackoverflow.com/questions/47854586
复制相似问题