2012-07-26 82 views
1

下面是代碼:循環問題PHP

$TopFive = array_slice($counts,0,5);  
{ 
    foreach($TopFive as $key => $tops) 
{ 


for($i=0; $i<$tops; $i++) 
{ 
    echo "*"; 
} 

$b=0; 
for($a=0; $a<5; $a++) 
{ 
    $b++; 
} 

echo "{$b}";   
echo "#:{$key} - {$tops} <br/>";  


       } 
      } 

目前,輸出看起來這樣的:

*********5#:THE - 9 
*****5#:OF - 5 
*****5#:TO - 5 
***5#:AND - 3 
***5#:THEM - 3 

,但我真的希望有是這樣的:

********* #1: THE - 9 
***** #2: OF - 5 
***** #3: TO - 5 
*** #4: AND - 3 
*** #5: THEM - 3 

我似乎無法弄清楚如何安排循環。有任何想法嗎?我很抱歉這個簡單的問題,我用完了想法。我只希望數字是1-5。

我只是想要一些意見,如何安排$ b中的循環,使計數將是1-5,而不僅僅是5

+0

請問您可以發佈'$ TopFive'的聲明部分嗎? – 2012-07-26 05:27:45

+0

感謝@Praveen Kumar,那正是我想表現的。 :) – user1242749 2012-07-26 05:27:55

+0

歡迎,我們需要知道'$ TopFive'的值或'var_dump'才能繼續! :) – 2012-07-26 05:28:37

回答

3

如果:

$TopFive = array('THE' => 9, 'OF' => 5, 'TO' => 5, 'AND' => 3, 'THEM' => 3); 

則:

$number = 1; 

foreach ($TopFive as $word => $count) 
{ 
    echo str_repeat('*', $count); // Outputs '*' characters 
    echo " #{$number}: {$word} - {$count}\n"; 
    $number++; // increment your number 
} 

Here's an example

+0

該死的,你在我面前:) +1 – alfasin 2012-07-26 05:29:45

+0

非常感謝@cbuckley,這對我的作品回答! – user1242749 2012-07-26 05:40:49

0

您此行有問題 for($a=0; $a<5; $a++)

$b一直遞增到5

爲了解決這個問題,只是初始化$x(或任何東西)外foreach循環與1。在適當的地方取消$becho $x; $x++;

+0

有人說,@Vinayak Garg,我該怎麼處理它? – user1242749 2012-07-26 05:25:35

+0

@ user1242749:請編輯 – 2012-07-26 05:28:57

0

您可以更改您的代碼:

$b=1; 
foreach($TopFive as $key => $tops) 
{         
    for($i=0; $i<$tops; $i++) 
    { 
     echo "*"; 
    }   
    echo "#$b:{$key} - {$tops} <br/>";  
    $b++; 
} 

但所有的內部循環是多餘的。

0

在您的代碼,請更改此部分:

echo "{$b}";   
echo "#:{$key} - {$tops} <br/>";  

要:

// echo "{$b}";   
echo "#$i:{$key} - {$tops} <br/>"; 

並使用str_repeat('*', $count)代替for循環! :)