使用php显示精确的数组元素

时间:2015-04-11 09:42:58

标签: php

我可以使用下面的代码显示所有数组元素,但我想知道如何只显示几个数组元素(例如,第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 ($rates as $rate) {
            echo '<tr>';

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

            echo '</tr>';
        }

        echo '</table>';
    }

3 个答案:

答案 0 :(得分: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>';
    }

答案 1 :(得分: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>';
}

答案 2 :(得分: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>';
}