2017-10-05 5 views
0

データベースからデータを配列に入力したいのですが、私はそのためのループ用に作成されたが、私は私が何か間違ったことをやっていると思います(私はまだそのためにとても残念なプログラミングに非常に新しいです!)forループを使用したPHPフィル配列

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

ダンプ文が唯一の存在を想定しているにもかかわらず、1人のユーザーをカウントそこに3人のユーザーがいる。

私はその後、その後のループのために他のデータを使用するため、この配列が必要:

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

私はこれは本当に悪い符号化であると確信しています。それは単純なもののためにあまりにも多くの行のように見える。だから私は本当に "downvoting"だけでなく、任意のアドバイスについて本当にうれしいだろう!

エンティティに関する詳細情報が必要な場合は、それらを提供してもらいたいです。

答えて

2

何かが欠けていない限り、あなたはループが多すぎます。foreachに固執します。

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

それを使用するには::$users配列構築するには

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

をしかし、あなたが実際にこの後$users配列を必要としませんならば、単に組み合わせる:

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

ありがとうございましたあなたの素早い答えのためにそんなに! 私はちょうどあなたのやり方を試しましたが、ダンプ(count($ users))をしても数字はまだ1ですが、これはなぜなのでしょうか? :) – sonja

+0

ああ、私もあなたのカットダウン解決策を試してみましたが、その唯一の問題は、addNotificationメソッドに与えられた最初の引数が配列でないことです。だから私は正確な場所([$ i])を追加しました。しかし、私はこれを解決するためのよりスムーズな方法があると確信しています!それを聞くのが大好きです! :D – sonja

関連する問題