【问题标题】:Php fill array with for loopphp用for循环填充数组
【发布时间】:2017-10-05 17:07:35
【问题描述】:

我想用我的数据库中的数据填充一个数组。我为此创建了一个 for 循环,但我认为我做错了什么(我对编程还是很陌生,很抱歉!)

 for($i=0; $i<count($uploadprofile->getAgencies()); $i++){
  foreach($uploadprofile->getAgencies() as $agency) {
    $users[$i] = $agency->getAgencyUser();
    }
  }
  dump(count($users));

dump 语句只计算 1 个用户,即使那里应该有 3 个用户。

我需要这个数组,然后在另一个 for 循环中使用数据:

   for($i=0; $i<count($users); $i++){
    foreach($users as $user){
      $manager->addNotification($user->toArray()[$i], $notif);
    }
  }

我确信这是一个非常糟糕的编码。对于这么简单的事情来说,它看起来行太多了。所以我会很高兴有任何建议,而不仅仅是“否决”!

如果需要有关实体的更多信息,我很乐意提供!

【问题讨论】:

    标签: php arrays symfony for-loop foreach


    【解决方案1】:

    除非我遗漏了什么,否则你的循环太多了,我会坚持使用foreach。构建$users 数组:

    foreach($uploadprofile->getAgencies() as $agency){
        $users[] = $agency->getAgencyUser();
    }
    

    使用它:

    foreach($users as $user){
        $manager->addNotification($user->toArray(), $notif);
    }
    

    但是,如果在此之后您实际上不需要 $users 数组,那么只需合并:

    foreach($uploadprofile->getAgencies() as $agency){
        $user = $agency->getAgencyUser();
        $manager->addNotification($user->toArray(), $notif);
    }
    

    【讨论】:

    • 非常感谢您的快速回答!我只是按照您的方式尝试过,但是在执行 dump(count($users)) 时,数字仍然是 1 但不是 3。任何想法为什么会这样? :)
    • 哦,我也尝试了您的缩减解决方案,唯一的问题是,给 addNotification 方法的第一个参数不能是数组。这就是我添加确切位置 ([$i]) 的原因。但我敢打赌,也有更顺畅的方法来解决这个问题!很想听听! :D
    猜你喜欢
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多