foreach数组在循环外不起作用

时间:2012-09-18 10:40:18

标签: php mysql arrays loops foreach

我试图在foreach循环之外获取数组的值,但它只给出一个值而不是全部三个;代码是这样的:

$user_id_worker = array();
    foreach ($query_result_worker as $row){
    $user_id_worker= $row['user_id'];
    var_dump($user_id_worker);
}

    var_dump($user_id_worker);

第一个var转储给了我:

string '12747' (length=5)
string '12596' (length=5)
string '12759' (length=5)

第二个(在循环之外)给了我:

string '12759' (length=5)

任何想法?谢谢!

6 个答案:

答案 0 :(得分:3)

您正在替换其值而不是向您创建的数组添加值。

因此$ user_id_worker变量只保存一个值。在循环之外,它是你放入的最后一个循环(循环的最后一次迭代)。

如果要将项添加到循环内的数组中,请执行以下操作:

$user_id_worker[]= $row['user_id'];

答案 1 :(得分:2)

您不会将其视为数组,只需更新一个变量即可。

问题在于此行$user_id_worker = $row['user_id'];,您$user_id_worker的值设置为该行,然后在下一个循环中将其再次设置为其他值。您没有将变量视为数组。

要添加到数组而不是替换旧值,您必须使用数组速记或数组推送,请参阅下文。

使用数组简写的示例:

$user_id_worker = array();
    foreach ($query_result_worker as $row){
    $user_id_worker[] = $row['user_id'];
}

var_dump($user_id_worker);

或使用array push

foreach ($query_result_worker as $row){
    array_push($user_id_worker, $row['user_id']);
}

var_dump($user_id_worker);

Jimmy的其他问题

  

快速提问,如果我在这个数组之后有一个函数,我想在其中使用数组,show_assigned_tasks_workers($ user_id_worker []);这只是不起作用,我怎么能以其他方式做到这一点?谢谢! - 吉米17分钟前

     

它只是不起作用,函数也做了选择,并且不知道数组将如何在该函数中,它将工作我认为只有数据是这样的:字符串'12747'(长度= 5)string'12596'(length = 5)string'12759'(length = 5)like strings ... - Jimmy 14分钟前

您可能需要围绕要调用的函数(每个工作者一个)执行每个循环。

做类似的事情:

foreach ($user_id_worker as &$workerId) {
  show_assigned_tasks_workers($workerId);
}

为每个用户运行一次该功能。

答案 2 :(得分:1)

您应该添加以下值:$user_id_worker[] = "something"

答案 3 :(得分:1)

您在每个循环传递中为$user_id_worker分配一个新值。

如果要将所有值都作为数组,则必须将值添加到该数组:

$user_id_worker[] = $row['user_id'];
// or:
array_push( $user_id_worker, $row['user_id'] );

答案 4 :(得分:1)

以这种方式更改您的程序:

$user_id_worker = array();
    foreach ($query_result_worker as $row){
    $user_id_worker[] = $row['user_id'];
    var_dump($user_id_worker);
}

答案 5 :(得分:-1)

更正您的代码

$user_id_worker = array();
    foreach ($query_result_worker as $row){
    $user_id_worker[]=$row['user_id']; //Should give [] as ur appending to array
    var_dump($user_id_worker);
}

    var_dump($user_id_worker);