2015-04-11 4 views
0

Я могу отображать все элементы массива с помощью кода ниже, но я хотел бы знать, как я могу отображать только несколько элементов массива (например, 4-й, 6-й и 11-й). Не могли бы вы мне помочь.отображение точных элементов массива с использованием php

$rates = $data->Rates->ExchangeRate; 

    if (is_array($rates) && count($rates) > 0) { 
     echo '<table><tr><th>ISO</th><th>Rate</th></tr>'; 

     foreach ($rates as $rate) { 
      echo '<tr>'; 

      echo '<td>' . $rate->ISO . '</td><td>' . $rate->Rate . '</td></tr>'; 

      echo '</tr>'; 
     } 

     echo '</table>'; 
    } 
+0

Если вы хотите показать только 3 или для записи, например только 4rt, 6-й и 11-й элементы, вам не нужен цикл. – Bsienn

+0

Или вы * можете * контактировать и проверить против переменной счетчика. – Alexander

ответ

2

Просто сделать массив допустимых значений ключа и каждый раз проверить, текущий ключ входит:

$rates = $data->Rates->ExchangeRate; 
$allow = array(4,6,11); 
    if (is_array($rates) && count($rates) > 0) { 
     echo '<table><tr><th>ISO</th><th>Rate</th></tr>'; 

     foreach ($rates as $key => $rate) { 
      if(!in_array($key, $allow){ 
       continue;//if not allowed, go to next iteration 
      } 
      echo '<tr>'; 

      echo '<td>' . $rate->ISO . '</td><td>' . $rate->Rate . '</td></tr>'; 

      echo '</tr>'; 
     } 

     echo '</table>'; 
    } 
0

Вы можете фильтровать массив в любом числе путей, прежде чем итерация над ним, или вы можете использовать условие внутри цикла

$rates = $data->Rates->ExchangeRate; 

if (is_array($rates) && count($rates) > 0) { 
    echo '<table><tr><th>ISO</th><th>Rate</th></tr>'; 

    $count = 0; 
    $show = array(4, 8, 11); 

    foreach ($rates as $rate) { 

     if (in_array($count++, $show)) { 
      echo '<tr>'; 
      echo '<td>' . $rate->ISO . '</td><td>' . $rate->Rate . '</td>'; 
      echo '</tr>'; 
     } 

    } 

    echo '</table>'; 
} 
0

Другие ответы дали решения, но я думаю, что медленнее, чем один публикуемую здесь (использовать массив включенных индексов, т.е. $included_indices = array(4,6,11);):

$rates = $data->Rates->ExchangeRate; 

if (is_array($rates) && count($rates) > 0) { 
    echo '<table><tr><th>ISO</th><th>Rate</th></tr>'; 

    foreach ($included_indices as $included_indice) { 
     $rate = $rates[$included_indice]; 
     echo '<tr>'; 

     echo '<td>' . $rate->ISO . '</td><td>' . $rate->Rate . '</td></tr>'; 

     echo '</tr>'; 
    } 

    echo '</table>'; 
}