以下のコードでfunction lwws内にプリントした構造体$xには値が入ってますが
外でプリントしたxには値が入ってません。これはなぜでしょうか。
言語はphpです。
<?php
function lwws($i){
$x[$i]->num = "あ";
$x[$i]->sm = "い";
$x[$i]->imgurl = "う";
$x[$i]->tltle = "え";
$x[$i]->setsumei = "お";
$x[$i]->mylist = "999";
var_dump($x);
}
//クラスで構造体を作る。public変数は個人の名前・年齢・体重みたいな
class A
{
public $num;
public $sm;
public $imgurl;
public $tltle;
public $setsumei;
public $view;
public $mylist;
public $coment;
public $URL;
public $tag;
}
$x[131] = new A;//ここが構造体の宣言。左辺に要素数書くと構造体の配列になる。要素数以上にアクセスしても自動で追加される
for($i=0 ; $i<30; $i++) {
lwws($i);
}
var_dump($x);
?>
クラスの値が変更されません
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: クラスの値が変更されません
読みづらいのでcodeタグをご利用ください。
※PHPとはいえ、ちゃんとインデントされるべきだと思います。
【追記】
PHPにおけるローカル変数とグローバル変数、あと参照も勉強されたほうが良いでしょう。
※PHPとはいえ、ちゃんとインデントされるべきだと思います。
【追記】
PHPにおけるローカル変数とグローバル変数、あと参照も勉強されたほうが良いでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ゆうたろう
Re: クラスの値が変更されません
publicになってるので外部から参照できるはずなんですができません
cでいうグローバル変数みたいなものなら関数内で値を変更できると思ったんですが・・・
cでいうグローバル変数みたいなものなら関数内で値を変更できると思ったんですが・・・
-
ゆうたろう
Re: クラスの値が変更されません
phpではグローバル変数を使う場合globalと関数内で宣言するみたいですね
事故解決しました
function lwws($i){
global $x;
$x[$i]->num = "あ";
$x[$i]->sm = "い";
$x[$i]->imgurl = "う";
$x[$i]->tltle = "え";
$x[$i]->setsumei = "お";
$x[$i]->mylist = "999";
var_dump($x);
}
事故解決しました
function lwws($i){
global $x;
$x[$i]->num = "あ";
$x[$i]->sm = "い";
$x[$i]->imgurl = "う";
$x[$i]->tltle = "え";
$x[$i]->setsumei = "お";
$x[$i]->mylist = "999";
var_dump($x);
}