Проблемы с возвратом массива в PHP - PullRequest
0 голосов
/ 18 апреля 2011

Просто пытаюсь вернуть массив в функцию.Не удача ...

(flag_friend_get_friends () - это функция, которая возвращает список объектов, содержащих массивы)

Так что без функции это работает:

    <?php

    $users_friends = flag_friend_get_friends($user->uid);

      foreach ($users_friends as $id => $value) {     
        $users_friends_ids[] = $id;    
      }

    $test = $users_friends_ids;

    print $test[0];

    ?>

Если я попытаюсь обернуть его функцией, она не будет работать (ничего не печатается) ...:

         <?php

        function myfunc () {        

        $users_friends = flag_friend_get_friends($user->uid);

          foreach ($users_friends as $id => $value) {     
            $users_friends_ids[] = $id;    
            }

        return $users_friends;  

        }


        $test = myfunc();   

        print $test[0];

        ?>

В чем «преднамеренная» ошибка?: (

Обновленный код:

<?php
function myfunc () {        

$users_friends = flag_friend_get_friends($user->uid);
  foreach ($users_friends as $id => $value) {     
    $users_friends_ids[] = $id;    
    }

return $users_friends;  
}

$test = myfunc($user);  
print $test[0];
?>

Ответы [ 3 ]

3 голосов
/ 18 апреля 2011

Вам нужно передать $user в вашу функцию при вызове:

$ test = myfunc($user)

ОБНОВЛЕНИЕ:

<?php
function myfunc ($user) {        

$users_friends = flag_friend_get_friends($user->uid);
  foreach ($users_friends as $id => $value) {     
    $users_friends_ids[] = $id;    
    }

return $users_friends;  
}

$test = myfunc($user);  
print $test[0];
?>

Вот так должен выглядеть ваш код.

2 голосов
/ 18 апреля 2011

В drupal $ user является глобальным.Итак, вам просто нужно определить его в верхней части вашей функции **, если эта функция всегда будет привлекать друзей текущего пользователя.

function myfunc () {        
  // pull in the global $user var
  global $user;

  $users_friends = flag_friend_get_friends($user->uid);

  foreach ($users_friends as $id => $value) {     
    $users_friends_ids[] = $id;    
  }

  return $users_friends;  
}
2 голосов
/ 18 апреля 2011

И вам нужно либо передать ссылку на $ users_friends_ids, либо объявить ее как глобальную в функции.

Проблема в том, что когда вы перемещаете вещи в функцию, они больше не имеют доступа к вашим локальным переменным.

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