Возврат функции и проблема - PullRequest
0 голосов
/ 26 июля 2011

У меня есть простая функция:

function name() {
 extract( myfunction_atts( array(
        'one' => '',  
        'two' => '',  
        ), $atts ) ); 

  /* CODE */

 return $output; /* return dataName(); in second case */
}

Теперь я хочу, чтобы возвращаемый результат выводил этот код:

    $output .= include_once(ADDRESS_CONST."/script.php");
    $output .= $data = data($one); 
    $output .= foreach($data->do($two) as $e) {;
    $output .= $e->info;
    $output .= } ;    

Дает синтаксическая ошибка, неожиданный T_FOREACH .

Итак, мне нужна функция, суть в следующем:

function dataName() {

        /* global $one;
        global $two;
        doesn't work */

        include_once(ADDRESS_CONST."/script.php");
        $data = data($one); 

        foreach($data->do($two) as $e) {;
          $e->info;
        } ;  
}

Не «видит» переменные $ one и $ two.Я уверен, что что-то упустил, и, возможно, есть более простой способ?

1 Ответ

3 голосов
/ 26 июля 2011

Невозможно назначить foreach следующим образом:

$output .= foreach($data->do($two) as $e) {;
$output .= $e->info;
$output .= } ; 

Вместо этого вам нужно выполнить цикл с foreach(), а внутри цикла назначить текущее значение вашему $output:

foreach ($data->do($two) as $e) {
    $output .= $e->info;
}


По сути, foreach() - это структура управления: она позволяет вашему сценарию зацикливаться;но это все: оно само по себе не возвращает никакого значения.

С другой стороны, внутри цикла вы можете делать много чего угодно: foreach() только гарантирует, что этот код будет выполнендля каждого элемента вашего массива.

...