LoginSignup
4
6

More than 5 years have passed since last update.

foreachの全データを返す

Last updated at Posted at 2016-05-24

phpのforeachの全データを取得するのに手間取ったので。

公式サイトより

サイトはここです

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr は array(2, 4, 6, 8) となります
unset($value); // 最後の要素への参照を解除します
?>

使ってみた

EloquentクラスAccountを使ってテーブルから値を取得。

最後のデータしか表示されない・・・。

$accounts = Account::all();

foreach ($accounts as $account) {
    $name = $account->name;
}
dd($name);

これで返ってきたのは以下の値。

"たけだ"

7つある全データのうちの最後だけ。
理由は foreachを回すたびに$nameが上書きされるから。

配列にする

そこで、一つ終わるたびに配列に突っ込むようにする。
1. 配列をつくる
2. 配列に突っ込む

$accounts = Account::all();

$names = [];
foreach ($accounts as $account) {
    $names[] = $account->name;
}
dd($names);

以下が返ってきた値。

array:7 [▼
  0 => "やまだ"
  1 => "すずき"
  2 => "まえだ"
  3 => "やました"
  4 => "たなか"
  5 => "くぼ"
  6 => "たけだ"
]
4
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6