当前,下面的代码仅返回$pizzas[]
中字符串的第一个字母:
$total = 0;
$pizzas = array('kebabpizza' => 80, 'calzone' => 60, 'vesuvio' => 60);
foreach ($pizzas as $pizza => $price) {
for($i = 0; $i < count($pizza); $i ++) {
echo $pizza[$i] . " - $price<br>";
break;
}
$total +=$price;
}
echo "Your order is gonna cost you $total kr<hr>";
输出:
k - 80
c - 60
v - 60
Your order is gonna cost you 200 kr
答案 0 :(得分:3)
当您执行foreach
循环时,您正在遍历数组。当您说as $pizza => $price
时,变量$pizza
被分配了您正在查看的当前数组项的键,而$price
被分配了值。因此,在循环的第一次迭代中,$pizza
是kebabpizza
,而$price
是80
。
接下来,您正在对字符串for
(或当时数组的键是什么)进行kebabpizza
循环。当您尝试在$pizza[$i]
循环的第一次迭代中访问for
时,您会在k
中得到字母kebabpizza
。然后,您echo
取出k
,然后取出比萨的价格。
接下来,您有一条break
语句将终止内部for
循环,而外部foreach
循环将继续。这就是为什么您只看到第一个字母的原因。
假设您要输出披萨的名称和价格,则根本不需要内部for
循环:
$total = 0;
$pizzas = array('kebabpizza' => 80, 'calzone' => 60, 'vesuvio' => 60);
foreach ($pizzas as $pizza => $price) {
echo "$pizza - $price<br>";
$total +=$price;
}
echo "Your order is gonna cost you $total kr<hr>";
答案 1 :(得分:0)
您为什么要遍历$pizza
$total = 0;
$pizzas = array('kebabpizza' => 80, 'calzone' => 60, 'vesuvio' => 60);
foreach ($pizzas as $pizza => $price) {
echo $pizza . " - " . $price . "<br>";
$total +=$price;
}
echo "Your order is gonna cost you $total kr<hr>";
答案 2 :(得分:0)
因为您正在查找$ pizza变量,它是一个字符串(所以是一个字符数组),而不是仅在foreach循环中使用它
$total = 0;
$pizzas = array('kebabpizza' => 80, 'calzone' => 60, 'vesuvio' => 60);
foreach ($pizzas as $key => $value) {
echo $key . " - $value<br>";
}
$total +=$price;
echo "Your order is gonna cost you $total kr<hr>";
清晰的示例
import { Slides } from 'ionic-angular';
答案 3 :(得分:0)
那是因为您试图在第二个循环中遍历字符串。
您的第一个循环将遍历数组中的每个元素:
foreach ($pizzas as $pizza => $price) { ...
将遍历这些项目
- kebabpizza => 80
- calzone => 60
- vesuvio => 60
在内部(第二个)循环(for($i = 0; $i < count($pizza); $i ++)
)中,您实际上将尝试遍历键元素中的每个字符
k[0]
e[1]
b[2]
a[3]
...
如果您完全跳过内循环并打印$pizza
,那么您应该没事
foreach ($pizzas as $pizza => $price) {
echo $pizza . " - $price<br>";
}
$total +=$price;
答案 4 :(得分:0)