php 超初心者 - PHPプロ!Q&A掲示板

4938

  • 0P

php 超初心者

質問日時 / 2018年4月16日 21:13    回答数 / 2件

Questioner:  30333033  このエントリーをはてなブックマークに追加 

キーワード / 配列変数とコピーの違い   

この二つコードの違いがわかりません。
下のコードでは,$cart=$_SESSION['cart'];の部分です。
このコードですとちゃんと表示されます。
この部分を$cart[]=$_SESSION['cart']; 
にすると番号がひとつしか表示されません。

ご指導頂けると幸いです。
よろしくお願いします。



  1. <?php
  2. try
  3. {
  4. $pro_code=$_GET['procode'];
  5.  
  6. $cart=$_SESSION['cart'];
  7. $cart[]=$pro_code;
  8. $_SESSION['cart']=$cart;
  9.  
  10. foreach($cart as $key=>$val)
  11. {
  12.  print$val;
  13.  print'<br>';
  14.  
  15. }
  16.  
  17. }
  18. catch(Exception $e)
  19. {
  20.  print'迷惑';
  21.  exit();>>CODE
  22.  
  23. <<CODE>>CODE
  24.  
  25. <<CODE>>CODE
  26.  
  27. <<CODE>>CODE
  28.  
  29. <<CODE>>CODE
}


?>
カートに追加しました。<br>
<br>
<a href="shop_list.php">商品一覧に戻る</a>


<<CODE

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix$cartと$_SESSION['cart']は配列ですが、 >$cart[]
 ┗A01-130333033親切に説明してくださり、ありがとうございます。 あ

回答一覧

並び替え:

A01
answerershimix [4月17日 08:45]

$cartと$_SESSION['cart']は配列ですが、

>$cart[]=$_SESSION['cart']; 

とすると、$cartが二次元配列になってしまいます。配列$cartのひとつめの要素が、その時点の$_SESSION['cart']の配列になり、ふたつめの要素に番号を追加することになります。ひとつめの要素が配列でふたつめの要素が文字列(もしくは整数)という状態です。

下記のようなソースで確認できると思います。
  1. <?php
  2. $_SESSION['cart'][0] = 'aaaaa';
  3. $_SESSION['cart'][1] = 'bbbbb';
  4. $_SESSION['cart'][2] = 'ccccc';
  5.  
  6. // 正しい
  7. $cart1 = $_SESSION['cart'];
  8. $cart1[] = 'ddddd';
  9. foreach($cart1 as $key=>$val) { print$val . "<br>"}
  10. // 確認
  11. echo "<pre>";
  12. print_r($cart1);
  13. echo "</pre><hr>";
  14.  
  15. // 誤り
  16. $cart2[] = $_SESSION['cart'];
  17. $cart2[] = 'ddddd';
  18. foreach($cart2 as $key=>$val) { print$val . "<br>"}
  19. // 確認
  20. echo "<pre>";
  21. print_r($cart2);
  22. echo "</pre>";
というか配列をprintで出力しようとすれば、Array to string conversionのNoticeになるハズです。デバッグ時にはエラーメッセージは警告も含めてすべて出力するように設定しておくべきです(そうすれば「配列」であることが一目瞭然だったと思います)。

この意見に回答する

ツリーへ TOPへ

A01-1
replyer30333033 [4月19日 21:04]

親切に説明してくださり、ありがとうございます。
あとでじっくり熟読したいと思います。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)