
配列の要素の値をループ中に変更して確認したいのですが、下記やり方では、なぜダメなのでしょうか?
$arr = array("値1", "キー1" => "値2", "値3");
foreach($arr as $key => $val){
$arr[$key] = "-{$val}-";
echo $val."<br />";
}
foreach($arr as $key => $val){
echo "<br />".$val;
}
上のforeachの結果が、下と同じようになると期待したのですが、うまくいきません。
なんで、上のforeachと下のforeachの結果が異なるのでしょうか?
foreach文で要素の値が更新されるのは、foreach文が終了した瞬間なのでしょうか。
それとも、値はすぐに更新されているけれども、foreach文の処理(順番に抽出する作業?)は既にスタートしてしまっているので、ループ中に更新されても、途中で反映することはできない、ということなのでしょうか?
さっぱり分からないので、誰か教えてください。
「配列の要素の値をループ中に変更して確認したい」というよりは、
「なんで、二つのforeach文で結果が異なるか知りたい」です。
No.1ベストアンサー
- 回答日時:
上のforeachでは、$arr[$key]の内容を$valにコピー(値渡し)しているに過ぎないからです。
C言語でいうポインタ(参照渡し)ではありません。
上のforeachでは、下記のような流れになります。
1)$arr[$key]の内容を$valにコピー。
2)$arr[$key]の内容を"-{$val}-"に書き換え。
3)$valを表示。
4)$keyをインクリメントして1)へ戻る
よって、上のforeachでは書き換え前の値が表示されます。
下のforeachでは、書き換えられた後の配列を表示しているため、2)でセットした値が表示されるはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Java Java 南京錠 2 2023/02/04 11:46
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cookieからのデータ取得に関して
-
意味を教えてください。
-
pdfファイルの複数添付 引数の型
-
Delphi XEの警告文を消したい
-
新大阪・梅田周辺でチェックア...
-
Arduino 全部のピンをチェック...
-
smartyでtplファイルでの2次元配列
-
if文などで使用される条件式で...
-
foreachの間にテーブルの<TR>を...
-
foerachの中でキーを足したり、...
-
正規表現について
-
リストボックス複数選択抽出方法
-
重複確認
-
マッチング処理(1:N)
-
ショッピングカートで$_SESSION...
-
再帰関数を用いて配列の合計を...
-
PHPの多次元配列について
-
While文を使って配列の中身を全...
-
mysqlにinsertするとエラーがで...
-
多次元配列の重複削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マッチング処理(1:N)
-
phpでforeachの中にforeachがあ...
-
foreachで上限回数指定方法また...
-
Excel VBAでフィルター後の対象...
-
Smartyで添え字が全て文字列の...
-
foreachの間にテーブルの<TR>を...
-
Arduino 全部のピンをチェック...
-
smartyでtplファイルでの2次元配列
-
if文などで使用される条件式で...
-
比重をつけて連想配列の中から...
-
POSTで渡されるデータの数がわ...
-
配列の要素の値をループ中に変...
-
pdfファイルの複数添付 引数の型
-
phpのエラーが解決できません
-
PHP DBの値とPOSTの値の差をだ...
-
foreachとかの勝手な省略?
-
VB.NET で 二次元のハッシュは...
-
$_POST受信で必要項目のみを結...
-
文字の置換?
-
ftokが動かない?
おすすめ情報