在PHP中返回数组的问题

时间:2011-04-18 13:25:16

标签: php drupal

只是尝试在函数中返回一个数组。没有好运......

(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 个答案:

答案 0 :(得分:3)

调用它时,您需要将$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];
?>

这就是您的代码需要的样子。

答案 1 :(得分:2)

您需要传入$ users_friends_ids的引用或在函数中将其声明为全局。

问题在于,当您将内容移动到某个函数中时,它无法再访问您的局部变量。

答案 2 :(得分:2)

在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;  
}