2011-04-18 54 views
0

试图在函数中返回一个数组。没有好运...返回PHP中数组的问题

(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

你需要传递$user到您的功能,当你把它叫做:

$测试= myfunc($user)

UPDATE:

<?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]; 
?> 

这是w你的代码需要看起来像。

+0

恐怕这似乎不起作用。这变成了一场噩梦... – james6848 2011-04-18 15:17:54

+0

你能发布更新后的代码吗? – 2011-04-18 15:58:01

+0

我会在上面贴出来,欢呼声。 – james6848 2011-04-18 16:15:21

2

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

问题是,当你将东西移动到一个函数中时,它无法再访问你的局部变量。

+0

$ users_friends_ids []应该可以工作,即使在函数内没有正确声明。在这种情况下,PHP只是将$ users_friends_ids创建为一个数组并向其添加元素。 – 2011-04-18 13:58:00

+0

它不会“工作”,因为它不在函数外部可用。在上面的代码中,他没有在函数之外访问它,但是我的观点是,当你将代码移动到一个函数中时,一个常见的问题就是你无法再访问同一个变量范围。 – 2011-04-18 15:10:43

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