ページ 11

クラスの値が変更されません

Posted: 2012年11月18日(日) 13:19
by ゆうたろう
以下のコードで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);

?>

Re: クラスの値が変更されません

Posted: 2012年11月18日(日) 13:33
by softya(ソフト屋)
読みづらいのでcodeタグをご利用ください。
※PHPとはいえ、ちゃんとインデントされるべきだと思います。

【追記】
PHPにおけるローカル変数とグローバル変数、あと参照も勉強されたほうが良いでしょう。

Re: クラスの値が変更されません

Posted: 2012年11月18日(日) 13:42
by ゆうたろう
publicになってるので外部から参照できるはずなんですができません
cでいうグローバル変数みたいなものなら関数内で値を変更できると思ったんですが・・・

Re: クラスの値が変更されません

Posted: 2012年11月18日(日) 13:56
by ゆうたろう
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);

}