我参加了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
。
答案 0 :(得分: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;
}
}
答案 1 :(得分:1)
你应该知道foreach的另一个用例:
Foreach将遍历数组中的每个元素,以及每个{key&amp; amp; value}元素。
您可以使用以下代码:
$items = array(
'item1' => 'X',
'item2' => 'Y',
);
foreach ($items as $key => $value) {
echo $key. ":" . $value . "<br>";
}
这将打印
ITEM1:X
ITEM2:Y
答案 2 :(得分:0)
对于每个项目,由于对象中有两个项目(循环运行两次),您将回显第一个项目。这就是它显示&#34; xx&#34;。
的原因答案 3 :(得分:0)
foreach
函数遍历数组的次数与数组中元素的数量一样多,为2(第一个元素为键item1
,第二个元素为键item2
)在你的例子中。
访问数组中第一个元素的代码是$items['item1'];
,在打印/回显时会输出此键(item1
)的值X
由于foreach
函数迭代了两次,因此它在其中执行了两次代码,在您的情况下打印了一个值X
(因此在迭代结束时打印两次)< / p>
只需提取特定值即可使用echo $items['item1']
; (例如,在item1
处提取值)没有foreach循环(因为你不需要遍历数组中的每个元素)
<?php
$items = array(
'item1' => 'X',
'item2' => 'Y',
);
echo $items['item1'];
将具有以下输出
x
只有当您需要浏览所有数组才能执行某些功能,访问特定元素或甚至仅搜索您不需要使用{时,您才需要使用foreach
{1}}因为php中有很多更好的数组函数。
答案 4 :(得分:0)
这就是我从代码中获得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
。