2011-12-01 44 views
1

我有幾個值的數組,並希望做這樣的事情:如何計算數組中值的訂單號?

$arrayvalues = array_reverse(explode(', ', somefunction())); 
foreach ($arrayvalues as $arrayvalue) : 
      printf('<li class="'.$countvalue.'">'.$arrayvalue.'</li>'); 
endforeach; 

我想在$ countvalue值的數組中

即數...數組將是這樣的:(「蘋果」,「橙」,「柚子」)

我想數量以匹配這些值 蘋果= 1的順序號,橙色= 2,葡萄柚= 3

或實際上即使它'我只是需要插入一個增量編號表示的css類

我試着玩$ i ... count ...但我沒有知道如何實現我想要的;我更比一個編碼器一個設計師,我看着在PHP幫助,但無法找到我的情況澄清溶液

謝謝

回答

0

使用for循環遍歷您的陣列,像這樣:

for($i = 0, $j = count($arrayvalues); $i < $j; $i++) : 
      printf('<li class="' . ($i + 1) . '">' . $arrayvalues[$i] . '</li>'); 
endfor; 

如果你想索引$i的一個開始,你需要添加一個在printf語句。

備註:如果您沒有實際生成格式化輸出,則不需要printf。

+2

語法錯誤:'endforeach' =>'endfor'我應該-1因爲沒有測試您提供的代碼作爲答案。 –

+1

+1用於初始化$ j並且不在循環的每個步驟中對數組進行計數,因爲大多數編碼器在那些天 –

+0

@SOlivers編輯中打破了功能,回滾了。 –

1
$arrayvalues = array_reverse(explode(', ', somefunction())); 
$i = 0; 
foreach ($arrayvalues as $arrayvalue) 
{ 
      $i++; 
      printf('<li class="'.$i.'">'.$arrayvalue.'</li>'); 
} 
+1

+1,我正要'printf()'相同的答案。 :)關於Fulvio – Pateman

+0

問題你的$ i ++;需要在printf之前('

  • '。$ arrayvalue。'
  • '); '(「apple」,「orange」,「grapefruit」) 我想要數字匹配這些值的順序號apple = 1,orange = 2,grapefruit = 3' –

    +0

    -1:我不是當他的陣列不關聯時,主張混合'foreach'和手動計數器。 –

    0
    $arrayvalues = array_reverse(explode(', ', somefunction())); 
    $i=0; 
    foreach ($arrayvalues as $arrayvalue) : 
          ++$i; 
          $countvalue = $i; 
          printf('<li class="'.$countvalue.'">'.$arrayvalue.'</li>'); 
    endforeach; 
    

    我們(或I)建議你使用一個正常的循環。

    for($i = 0; $i < count($arrayvalues); $i++) { 
        printf('<li class="'.($i+1).'">'.$arrayvalue.'</li>'); 
    } 
    
    4

    您已經有一個基於訂單的增量編號。請記住,這隻有在您的密鑰基於0時纔有效。如果使用關聯數組,則需要使用for循環(如nickb所示)。

    $arrayvalues = array_reverse(explode(', ', somefunction())); 
    foreach ($arrayvalues as $key => $arrayvalue){ 
        echo "<li class='$key'>$arrayvalue</li>"; 
    } 
    
    +4

    這是你應該做的。到目前爲止,所有其他答案都是不必要的複雜,而複雜的代碼會導致錯誤的代碼。 @LeviMorrison不,他不會這樣做:「實際上,即使它只是一個增量數字,根據迴應的值也無所謂」。 '$ key'值保證是唯一的。 –

    +0

    @AbhiBeckert注意。而且,printf在這裏沒用。我會建議'回聲「

  • $ arrayvalue
  • 」;'沒有必要不要。 –