2015-06-08 219 views
0

我正在练习foreach和for循环,并且将它们结合起来导致我意想不到的结果。下面是for循环语句中的foreach语句。for循环内的foreach;保持循环

PHP:

<?php 
$names = array("A", "B", "C", "D"); 

for ($i = 0; $i <= 3; $i++) 
{ 
    foreach ($names as $name) 
    { 
     echo "$name = $i "; 
    } 
} 
?> 

OUTPUT:

A = 0 B = 0 C = 0 D = 0 A = 1 B = 1 C = 1 D = 1 A = 2 B = 2 C = 2 D = 2 A = 3 B = 3 C = 3 D = 3

预期输出:

A = 0 B = 1 C= 2 D = 3

请告诉我我做错了什么,这是什么解决方案。我不想使用数组键和值。 :)

+1

* PS:我不想要使用数组键* < - 在这里有你的答案 – Rizier123

+0

你正在运行嵌套循环,对于'for'循环的每一次迭代,'foreach'循环都会遍历整个'$ names' a rray。所以你有4个外部迭代,3个内部迭代,给你4×3 = 12个'echo'调用。 –

+0

@MarcB我怎么只做一次迭代? –

回答

1

你想foreach只:

foreach($names as $key => $value) { 
    echo "$value: $key"; 
} 

你不需要嵌套循环风格只是为了让数组键 - PHP可以平凡给他们你与as $key => $value版的foreach。

+0

请参阅OP的问题中的PS:* PS:我不想使用数组键和值。 :)*不要问我为什么不。 – Rizier123

+0

那么你想要的是不可能的。 “我有一个包含键和值的数组,我不需要键和值”。那么你不能有一个数组。 –

+0

我知道加拿大人已经很晚了:)但是:*你想*我不想要,OP写道。 – Rizier123

1

foreach遍历整个数组遍历外部循环。试试这个:

$i = 0; 
foreach ($names as $name) { 
    echo "$name = $i "; 
    $i++; 
} 
-1

可以使用While循环

$names = array("A", "B", "C", "D"); 
$i=0; 

    foreach ($names as $name) 
    { 
     echo "$name = $i "; 
     $i++; 
     array_pop($names); 
    } 

结果:

A = 0 B = 1 C = 2 d = 3

+0

那么有一段时间,如果它只会运行一次,有什么意义呢? –

+0

@MarcB我想只是为了它的乐趣。 – Rizier123

+0

@MarcB用array_pop($ names)编辑; –