Моля за по-оптимизирано решение на този проблем.

tedo96

Registered
Имам чуството, че това е много код за едно просто извеждане. Как може да се оптимизира?
Забравих да спомена, че работя с CodeIgniter.
PHP:
    public function printLastThreeTopics() {
        $this->load->helper('text');
        $this->db->order_by('id', 'desc');
        $this->db->limit(3);
    
        $query = $this->db->get('blog_topics');
        $topics = $query->result_array();
        $alltopics = array();
        $newtopic = array();
        foreach ($topics as $topic) {
            $newtopic['id'] = $topic['id'];
            $newtopic['title'] = $topic['title'];
            $newtopic['topic'] = $topic['topic'];
            $newtopic['short'] = word_limiter($topic['topic'], 50);
            $newtopic['image'] = $topic['image'];
            $newtopic['author'] = $topic['author'];
            $newtopic['tags'] = $topic['tags'];
            $newtopic['category'] = $topic['category'];
            $newtopic['date'] = $topic['date'];
            $alltopics[] = $newtopic;
        }
        return $alltopics;
    }
 
Във първия foreach сложи още един :

PHP:
 public function printLastThreeTopics() {
        $this->load->helper('text');
        $this->db->order_by('id', 'desc');
        $this->db->limit(3);

        $query = $this->db->get('blog_topics');
        $topics = $query->result_array();
        $alltopics = array();
        $newtopic = array();
        foreach ($topics as $topic) {
          foreach($topic as $key=>$val)
            $alltopics[][$key] = $val;

        }

        return $alltopics;

    }

Едит: Даже може да махнеш този $newtopic масив.
 
PHP:
public function printLastThreeTopics() {
        $this->load->helper('text');
        $this->db->order_by('id', 'desc');
        $this->db->limit(3);
        $query = $this->db->get('blog_topics');
        $alltopics = $query->result_array();
  foreach($alltopics as $key=>$topic){
   $alltopics[$key]['short'] = word_limiter($topic['topic'], 50);
  }
return $alltopics;
     }
 
Кода на Павката ми изглежда по-добър. :)

Сетих се за още един въпрос...
Извеждам си резултатите така:
PHP:
                <?php 
                foreach($last_topics as $last_topic) {
                ?>
                <div class="third">
                    <h4><?= $last_topic['title']; ?></h4>
                    <small>от <a href="#"><?= $last_topic['author']; ?></a> на <?= $last_topic['date']; ?></small>
                    <span class="img_frame_thin left"><img src="<?= $last_topic['image']; ?>" alt="" /></span>
                    <p><?= $last_topic['short']; ?><a href="single.html">Continue...</a></p>
		</div>
                
                <?php
                }
                ?>
Как мога при третото последно завъртане на цикъла class-a от <div class="third"> да стане на <div class="third last">
 
Брой завъртанията. Дефинирай една външна променлива $i = 0; и в края на цикъла увеличавай с 1. А отгоре прави проверка, когато $i == 3 да ти сменя класа.
 
relax4o каза:
Брой завъртанията. Дефинирай една външна променлива $i = 0; и в края на цикъла увеличавай с 1. А отгоре прави проверка, когато $i == 3 да ти сменя класа.
Точно така пробвах, но не се получи и реших да питам. Започнах да експериментирам и сложих $i++; в началото на цикъла, а не в края и стана. :)
 
По принцип не би трябвало да има проблем, когато го сложиш в края. А можеш да пробваш и така:

PHP:
$i = 0;
foreach(....){

         if(++$i == 3){

        }

}
 

Горе