0

我的 abc 循环有问题。我比较了 2 个循环,如果字符串匹配我在超链接之间嵌入,但是我将如何避免不显示循环项目两次。

<?php
    foreach($this->data->lexikon_index() as $index){
        foreach ($abc as $letter){      
            echo '<li>';
            if ( $index->alpha == $letter ){
                echo "<a href=\"#{$index->alpha}\">{$index->alpha}</a>";
            } else {
                echo $letter;
            }

            echo '</li>';
        }

        $lexikon_content[] = $this->data->lexikon_content($index->alpha);
    }
    echo '</ul>';
?>
4

2 回答 2

2

使用数组来存储您已经使用过的变量。然后使用!in_array()

<?php
    unset($used);
    foreach ($this->data->lexikon_index() as $index) {
        foreach ($abc as $letter) {
            echo '<li>';
            if ($index -> alpha == $letter && !in_array($letter, $used)) {
                $used[] = $letter;
                echo "<a href=\"#{$index->alpha}\">{$index->alpha}</a>";
            } else {
                echo $letter;
            }
            echo '</li>';
        }
        $lexikon_content[] = $this -> data -> lexikon_content($index -> alpha);
    }
    echo '</ul>';
?>
于 2013-03-20T15:44:50.847 回答
0

使用您的代码,您正在执行大量循环。我个人会尝试这个(如果我正确阅读了您的代码):

<?php
    $lexikon_content = array();
    foreach ($this->data->lexikon_index() as $index) {        
        $lexikon_content[count($lexikon_content)] = $this -> data -> lexikon_content($index -> alpha);
    }
    foreach ($abc as $letter) {
        echo '<li>';
        if (in_array($letter, $lexikon_content)) {
            echo "<a href=\"#".$letter."\">".$letter."</a>";
        } else {
            echo $letter;
        }
        echo '</li>';
    }

    echo '</ul>';
?>
于 2013-03-20T16:03:13.473 回答