2017-01-04 6 views
0

自分のサイトのテーブルを占有するforループを作成しました。もともと私はif (i++ <= 10) {を使って結果の数を制限しました。forループの結果の数を逆順に制限する

しかし、私はそれが逆の順序(最新の項目が最初になる)になるようにforループを調整しました。ここに私のコードです:

for ($i=count($shipmentInfoArray['ShipmentList'])-1; $i >= 0; $i--) { 
              $shipmentUrl = BASE_URL . "shipment.php?ShipmentID=" . $shipmentInfoArray['ShipmentList'][$i]['ShipmentID']; 

明らかに、それはカウントアップの代わりに、私の元の制限コードは動作しません。

私はこれを試してみましたが、それはうまくいきませんでした:

if ($i-- >= (count($shipmentInfoArray['ShipmentList']) - (count($shipmentInfoArray['ShipmentList'])-10)) { 

私の希望は、それは私が表示したい番号(100で同じ数を引いた後、エントリの総数を取るでした - ( 100-10)= 10 entries。

"count"がまだ完了していないため、これが機能しないと仮定して、最後に 'break'を追加しようとしました。/

ご提案ありがとうございます。ありがとうございました!

以下は動作するはずのような
+0

'$ shipmentInfoArray ['ShipmentList']'にはどのような例がありますか? – mc10

+0

@ mc10 $ shipmentInfoArray ['ShipmentList']は、出荷のデータベースを呼び出します。これを使用してテーブルのさまざまな情報をエコーし​​ます(配送コスト、期間、距離など)。 dbの各列が表にエコーされます。例として1行 - 'echo '​​'。 number_format((float)$ shipmentInfoArray ['ShipmentList'] [$ i] ['ActualDistance']、2、 "。"、 "、")。 ''; ' – Tim

答えて

0

何か:

// Set the limit to the max number of results 
$LIMIT = 10; 
foreach (array_reverse($shipmentInfoArray['ShipmentList']) as 
     $shipmentIndex => $shipment) { 
    if ($shipmentIndex >= $LIMIT) { 
     break; 
    } 

    // Use $shipment 
} 
+0

おそらく閉じますが、配列内に10個未満のアイテムがある場合はどうなりますか? –

+0

@MarkAdelsbergerああ、その事件を忘れてしまった。 – mc10

+0

それは素晴らしい点です@MarkAdelsberger、我々はかなりのインスタンスがあります。それはif @ else @ mc10で解決できますか? – Tim

0

私はあなたが過剰に複雑にこれを行うと、あなたは結果の複雑さによって推論しようとして自分自身を混乱している感じ。多くのアプローチがありますが、私はそれが別のものより優れているかどうかはわかりません...

2番目のカウンタ(たとえばj)を0に初期化し、各繰り返しで1つの簡単な解決策としてインクリメントすることができます。

関連する問題