Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   php foreach исключение для соло (https://javascript.ru/forum/server/46591-php-foreach-isklyuchenie-dlya-solo.html)

Duda.Ml1986@gmail.com 16.04.2014 11:18

php foreach исключение для соло
 
Всем привет.

if(isset($searchResult[1])){
                        foreach ($searchResult as $index => $result) {


В теле foreach 40 строчек кода условий, есть ли возможность избежать
вывода того же для $searchResult[0] где только одна запись?
А то дублирование получается.

Вывод в цикле так : $searchResult[$index]['pos'] а не $result['pos']

Благодарю

devote 16.04.2014 11:28

Нифига не понял что ты имеешь ввиду

devote 16.04.2014 11:37

не знаю, может ты это имел ввиду:
foreach (array_slice($searchResult, 1) as $index => $result) {
}

Duda.Ml1986@gmail.com 16.04.2014 15:05

Короче есть массив типа:

array([0] = > array(), [1] => array() .... N)
но он может и быть такой:
array()

Грубоговоря массив входящий в цикл может быть многомерным и не многомерным. И теперь есть вот такое чудо:
if(isset($searchResult[1])){
                        foreach ($searchResult as $index => $result) {
                            if ($result['pos'] == 'left' && $result['par'] == '0') {                                    
                                $resultString .= "<a href='/index.php/" . $result['url'] . "' class='searchResult'>" . $result['title'] . "</a><br/>";
                            } else
                            if ($result['pos'] == 'left' && $result['par'] != '0') {                                    

                                // достаю родителя
                                $parent = $M_Menu->getMenupointById($result['par']);
                                if ($parent['par'] != 0) {
                                    $result['url'] = $parent['url_menupoint'];
                                    $parent = $M_Menu->getMenupointById($parent['par']);
                                }
                                $resultString .=  "<a href='/index.php/". $parent['url_menupoint'] . "/"   .$result['url'] . "' class='searchResult'>" . $result['title'] . "</a><br/>";
                            } else
                            if ($result['pos'] == '' && $result['par'] == '0') {                                        

                                // пункты главного меню
                                $resultString .=  "<a href='/index.php/"  . $result['url'] . "' class='searchResult'>" .$result['title'] . "</a><br/>";

                            } else
                            if ($result['pos'] == 'bottom' && $result['par'] == '0') {                                  

                                // пункты главного меню
                                $parent = $M_Menu->getMenupointById($result['id_menupoint']);
                                $resultString .=  "<a href='/index.php/". $parent['url_menupoint'] . "' class='searchResult'>" .$result['title'] . "</a><br/>";

                            } else
                            if ($result['pos'] == '' && $result['par'] == '') {                                          

                               // записи на статью для новостей и докторов , значит $result['id_menupoint'] = ''
                                if($result['id_menupoint'] == '') {
                                    $postData = $M_Menu->getPostByUrl($result['url']);
                                }

                                if($postData['id_menupoint'] == 3) {                                                     
                                    $resultString .=  "<a href='/index.php/vrachi-izrailya/". $result['url'] . "'>" .$result['title'] . "</a><br/>";
                                } else if ($postData['id_menupoint'] == 311) {                                           
                                    $resultString .=  "<a href='/index.php/news/". $result['url'] . "' class='searchResult'>" .$result['title'] . "</a><br/>";
                                }
                            }
                        }

                    } else if (isset($searchResult)) {                                                                    

                        if ($searchResult['pos'] == 'left' && $searchResult['par'] == '0') {                            
                            $resultString .=  "<a href='/index.php/" . $searchResult['url'] . "' class='searchResult'>" . $searchResult['title'] . "</a><br/>";
                        } else
                        if ($searchResult['pos'] == 'left' && $searchResult['par'] != '0') {                            

                            // достаю родителя
                            $parent = $M_Menu->getMenupointById($searchResult['par']);
                            if ($parent['par'] != 0) {
                                $searchResult['url'] = $parent['url_menupoint'];
                                $parent = $M_Menu->getMenupointById($parent['par']);
                            }
                            $resultString .=  "<a href='/index.php/". $parent['url_menupoint'] . "/"   .$searchResult['url'] . "' class='searchResult'>" . $searchResult['title'] . "</a><br/>";
                        } else
                        if ($searchResult['pos'] == '' && $searchResult['par'] == '0') {                                 

                            // пункты главного меню
                            $resultString .=  "<a href='/index.php/"  . $searchResult['url'] . "' class='searchResult'>" .$searchResult['title'] . "</a><br/>";

                        } else
                        if ($searchResult['pos'] == 'bottom' && $searchResult['par'] == '0') {                           

                            // пункты главного меню
                            $parent = $M_Menu->getMenupointById($searchResult['id_menupoint']);
                            $resultString .=  "<a href='/index.php/". $parent['url_menupoint'] . "' class='searchResult'>" .$searchResult['title'] . "</a><br/>";

                        } else
                        if ($searchResult['pos'] == '' && $searchResult['par'] == '') {                                 

                            // записи на статью для новостей и докторов , значит $searchResult['id_menupoint'] = ''
                            if($searchResult['id_menupoint'] == '') {
                                $postData = $M_Menu->getPostByUrl($searchResult['url']);
                            }

                            if($postData['id_menupoint'] == 3) {                                                        
                                $resultString .=  "<a href='/index.php/vrachi-izrailya/". $searchResult['url'] . "' class='searchResult'>" .$searchResult['title'] . "</a><br/>";
                            } else if ($postData['id_menupoint'] == 311) {                                              
                                $resultString .=  "<a href='/index.php/news/". $searchResult['url'] . "' class='searchResult'>" .$searchResult['title'] . "</a><br/>";
                            }

                        } else
                        {
                            $resultString .= " 2 ПОИСК НЕ ДАЛ РЕЗУЛЬТАТОВ !! !";
                        }
                    } else {
                        $resultString .= " 1 ПОИСК НЕ ДАЛ РЕЗУЛЬТАТОВ !! !";
                    }

                    $this->setTKD(
                        'Поиск',
                        '',
                        ''
                    );

Duda.Ml1986@gmail.com 16.04.2014 15:06

Количество условий пусть не пугает, бд вообще дастишь фантастишь )) а админку трогать нельзя как и урлы((

devote 16.04.2014 15:15

оберни массив в массив если в нем нет индекса 1
примерно так:
if (isset($searchResult)) {
    $searchResult = isset($searchResult[1]) ? $searchResult : array($searchResult);

    foreach ($searchResult as $index => $result) {
    ...
    }
} else {
    $resultString .= " 1 ПОИСК НЕ ДАЛ РЕЗУЛЬТАТОВ !! !";
}

Duda.Ml1986@gmail.com 16.04.2014 15:21

Спасибо гражданин, товарищ, барин. Это просто но решение классное, благодарю!


Часовой пояс GMT +3, время: 00:56.