PHP оптимизирующий код для foreach - PullRequest
0 голосов
/ 23 июня 2011

Я разрабатываю что-то вроде простого и предназначенного для конкретной цели cms.

Я использую класс db, который выводит массив в результате запроса, но этот массив различается по структуре в зависимости от mysql_num_rows.

Если есть только один результат, он выводит простой массив, иначе он выводит вложенный массив.

Итак, я должен проверить структуру массива, чтобы решить, делать ли цикл с foreach или просто выводить результаты.

с простым mysql_fetch_assoc мы можем использовать while (), и тогда с количеством строк проблем не возникает. но с массивом мы должны проверить это.

До сих пор все в порядке.

Проблема в том, что код будет повторяться для двух условий. с небольшим изменением имени массива.

Имя массива $ res, если один результат будет $res['anything here'], иначе, поскольку мы должны использовать foreach($res as $row), массив будет $row['anything here'].

Так что код выглядит ужасно и очень большой. Пожалуйста, возьмите сунулку здесь: http://mohamedkadri.com/code.html и скажите мне, как сделать ее проще и меньше.

Ответы [ 2 ]

6 голосов
/ 23 июня 2011

Решение простое:

Измените слой БД, чтобы вы могли заставить его возвращать список строк, даже если есть только одна строка.Это единственное правильное решение.

3 голосов
/ 23 июня 2011

Это не очень хороший подход.Я бы предложил изменить класс БД, чтобы у вас был другой метод для вызова в зависимости от того, будет ли запрос возвращать одну строку или несколько.Например, в классах базы данных Zend Framework есть fetchRow и fetchAll.Это облегчит вам работу с возвращаемыми данными.

Другой вариант может состоять в том, чтобы просто всегда возвращать вложенный массив, даже если была только одна строка.Таким образом, код для обработки данных всегда будет одинаковым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...