2017-09-27 11 views
-1

配列から変数を表示しようとしています。私はforeachループを使用していますが、$ order ['campaign_name']をループの前に表示して、一度しか表示されないようにする必要があります。これどうやってするの?私が$ orders ['campaign_name']に変更すると、私は未定義のインデックスエラーが出ます。foreachループ外の配列の変数を使用

<div class="table-responsive"> 
      <table class="table" id="component-table"> 
       <?php if ($orders) { ?> 
       <?php foreach ($orders as $order) { ?> 
       <thead> 
       <tr> 
        <td colspan=100%><h3><?php echo $order['campaign_name']; ?></h3></td> 
       </tr> 
       </thead> 

       <tbody> 
       <tr class="campaign-list" id="campaign-list"> 
        <td><?php echo $order['component_name']; ?></td> 
        <td><?php echo $order['component_owner']; ?></td> 
        <td><?php echo $order['component_date']; ?></td> 
        <td><?php echo $order['campaign_code']; ?></td> 
       </tr> 
       <?php } ?> 
       <?php } else { ?> 
       <tr> 
        <td class="text-center" colspan="8"><?php echo $text_no_results; ?></td> 
       </tr> 
       <?php } ?> 
       </tbody> 
      </table> 
      </div> 
+0

変数が範囲外であるため、変数を参照できません。 – Strikegently

+2

を 'foreach'に置くのではなく、ループの上に置くことができます。' echo $ orders [0] ['campaign_name'] ' – Manav

+0

すべてのキャンペーン名は同じですか? –

答えて

1

はここから学ぶすっきり例です。あなたはVALUEを直接呼び出しています。 簡単に配列の後ろにインデックス値を置くだけです echo $ orders [0] ['campaign_name'] あなたの価値が印刷されます。

0

あなたが表示したい配列のどの指標を知っておく必要があります必要がありますが、あなたは、配列の最初のインデックスを表示したい場合は、$orders[0]['component_name']を使用することができます。

<div class="table-responsive"> 
      <table class="table" id="component-table"> 
       <?php if ($orders) { ?> 
       <thead> 
       <tr> 
        <td colspan=100%><h3><?php echo $orders[0]['campaign_name']; ?></h3></td> 
       </tr> 
       </thead> 
       <tbody> 
       <?php foreach ($orders as $order) { ?>  
       <tr class="campaign-list" id="campaign-list"> 
        <td><?php echo $order['component_name']; ?></td> 
        <td><?php echo $order['component_owner']; ?></td> 
        <td><?php echo $order['component_date']; ?></td> 
        <td><?php echo $order['campaign_code']; ?></td> 
       </tr> 
       <?php } ?> 
       </tbody> 
       <?php } else { ?> 
       <tbody> 
       <tr> 
        <td class="text-center" colspan="8"><?php echo $text_no_results; ?></td> 
       </tr> 
       </tbody> 
       <?php } ?> 
      </table> 
      </div> 
0

あなたのキャンペーン名はforeachループの内側にあるためエコーアウトし続けます。一度しか表示したくない場合は、必ずforeachループの上に配置してください。あなたはループの前に存在していない、これらの値を取得しようとしている

<table> 
... 
<?php 
if ($orders): 
    echo $order['campaign_name']; 
    foreach($orders as $order): 
     echo '...'; // other components 
    endforeach; 
else: 
    echo $text_no_results; 
endif; 
?> 
... 
</table> 
関連する問題