2013-10-07 4 views
0

Это может быть странно и, вероятно, не работает, но я хотел проверить, прежде чем я отказался от этой идеи. По сути, я пытаюсь использовать результаты функции как один из параметров для другой функции. Например - function1 ($ param1, function2 ($ param1)) ;.Использование функции как параметра для другой функции в PHP

Код, который я включил, выводит все, что я хочу, единственная проблема, с которой я сталкиваюсь, заключается в том, что он выводит его в неправильном порядке - вместо вывода: logos, h2, form, h2, form; он выводит: форма, h2, логотипы, форма, h2.

// Display list 
function ul($c, $p){ 
     echo '<ul class="'.$c.'">'.$p.'</ul>'; 
    } 
    // Display list item 
    function li($c, $p){ 
     echo '<li class="'.$c.'">'.$p.'</li>'; 
    }  
// Display navigation 
     function nav(){ 
      require 'strings.php'; 
      // If the user is not logged in, display the login form 
      if(!isset($_SESSION[$uss])){ 
       $nav = li('', require_once 'log_in.php'); 
      // Otherwise provide the user information and navigation 
      }else{ 
       $nav = li($lks, $_SESSION[$uss][$uns]). 
         li($dss, $uss.' Id: '.$_SESSION[$uss]['id']). 
         li($dss, $uss.' Type: '.$_SESSION[$uss]['type']). 
         '<div id="display_projects_container">'. 
         require_once('display_projects.php'). 
         '</div>'. 
         li($lks, '<a href="newsfeed.php" class="'.$lks.'">News Feed</a>'). 
         li($dss, 'Check for updates.'). 
         li($lks, '<a href="task_list.php" class="'.$lks.'">Task List</a>'). 
         li($dss, 'Tasks to be completed.'). 
         li($lks, '<a href="logout.php" class="'.$lks.'">Log Out</a>'). 
         li($dss, 'Time for a burrito!'); 
      } 
      echo '<div id="left_column"> 
       <!--After Breakpoint Logo--> 
       <img src="logo.png" class="after_breakpoint_logo" />'; 
       ul('navigation', '<!--Before Breakpoint Logo-->'. 
           li('before_breakpoint_logo', '<a href="index.php"> 
     <img src="logo.png" class="before_breakpoint_logo" /></a>'). 
           $nav); 
       echo '</div><div id="content_container"><div id="content">'; 
     } 

Есть ли работа для этого? Или это просто невозможно сделать?

+0

не видя, что '' li' и ul' я понятия не имею, что ты не просишь –

+0

Я добавил Ли и ул функции для кода теперь. Я предполагаю, что проблема связана с тем, что функции отражают их результаты. Я просто не уверен, что делать. – phpstudent

ответ

1

Проблема в том, что вы эхом отдаете результаты на выходе. Вместо этого вы должны использовать функции и ul для создания и return строки, которые вызывающий абонент будет эхо-сигнал или делать по своему усмотрению. Поэтому ваши ul и li функции должны стать:

function ul($c, $p){ 
    return '<ul class="'.$c.'">'.$p.'</ul>'; 
} 

function li($c, $p){ 
    return '<li class="'.$c.'">'.$p.'</li>'; 
}  

Вы бы затем вызвать li столько раз, сколько вы делаете, чтобы установить $nav. Затем положить все это вместе, в конечном вызова вам придется:

echo ul('navigation', '<!--Before Breakpoint Logo-->'. 
    li('before_breakpoint_logo', '<a href="index.php"> 
     <img src="logo.png" class="before_breakpoint_logo" /></a>'). $nav); 
Смежные вопросы