• ベストアンサー

PHPにてクラスを配列にすることは可能でしょうか。

PHPにてクラスを配列にすることは可能でしょうか。 環境はPHP5です。 現在下記のようなクラスを作成しました。 class Ary_c { var $v1; // コンストラクタ function Ary_c() { $this->v1 = "test"; } } このクラスをC++言語などで出来るような、 クラスの配列として扱いたいのです。 C++だとたとえば10個の要素があるクラスの配列は Ary_c t[ 10 ]; みたいな感じで宣言できます。 こういったことをPHPでやることは可能でしょうか。

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんな感じ $t = array(); for ($i = 0; $i < 10; $i++) { $t[$i] = new Ary_c(); } print ($t[1])->v1;

RockmanX
質問者

お礼

お礼が遅れて申し訳ありません。 大変助かりました。ありがとうございます。

その他の回答 (1)

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.2

ArrayObject を継承することでオブジェクトを配列のように扱うことができる。 http://jp2.php.net/manual/ja/class.arrayobject.php foreach でのアクセスが遅いとの指摘があるけど、STD_PROP_LIST を指定するとどうなんだろうね。

RockmanX
質問者

お礼

なるほど。このようなものもあるのですね。 参考になりました。ありがとうございます。

関連するQ&A

  • クラスの中の配列へのアクセス

    お世話になります。 昨日?に似たような質問をさせていただきましたが、またよろしくお願いいたします。 以下のようなクラスがあります。 (自分で動かして確認したいのですが、今確認する環境がないので申し訳ありませんがご回答お待ちしてます) class Class1{   var $list; // 添字が数値のの配列です   …   function getList(){     return $this->list;   } } $a = new Class1; $a->getList()->[0] ↑上のようなやり方で、Class1の$listの配列の1番目(0番目)の要素を取得したいのですが、これは可能なのでしょうか? 何卒よろしくお願い致します。

    • ベストアンサー
    • PHP
  • クラスについて

    こんにちわ。以前お世話になりました。 クラスについての質問です。 DBとしてPostgreSQLを使用します。 店コード(store_cd)を入力すると、名前(store_name) をDBから取ってくるクラスを作りたいのですが、 以下のようにクラス定義をしみましたがうまくいきませ ん。すごく見当違いなことをしていたらすみません。。 どなたかよろしくお願いします。 <?PHP // コードクラス class clsCode { // メンバ(プロパティ)の宣言 var $cd; // コンストラクタ function clsCode() { $this->cd; } // デストラクタ function Destroy() { unset($this); } // 名前を求めるメソッド function getName($fltcd) { $sql="select store_name from store_basic where store_cd=$this->cd"; }

    • ベストアンサー
    • PHP
  • phpでオブジェクト化に挑戦中です。配列がうまく扱えません。

    このようなサンプルプログラムを作ってみました どうやら配列がまずいようなのですが、どうすればよいでしょうか。 <?php class TEST2{ var $b1; } class TEST{ var $a1=TEST2; function printout(){ $this->$a1[0]->b1='123 '; $this->$a1[1]->b1='abc '; $this->$a1[2]->b1='DEF '; } } $c = new TEST; $c->printout(); echo $c->$a1[0]->b1; echo $c->$a1[1]->b1; echo $c->$a1[2]->b1; ?> ちなみに出力結果は DEF DEF DEF となりました。 疑問1.なぜ全部同じ結果になるのか 疑問2.配列だと echo $c->$a1[2]->b1; のように、$a1と、$マークがないと動かない。$を取ると強制終了される。 お願いします。へんてこな質問ですみません。

    • 締切済み
    • PHP
  • PHP4でのSmarty派生クラスの定義について

    こんにちはよろしくお願いします。 PHP4でSmarty派生クラスを定義する方法を教えてください。 PHP5のサンプルコードで次のようなものがありました。 PHP4では,「private」が使えないらしいとか,「__construct」ではなくてクラス名がコンストラクタ名になるとかでうまくいかないようです。どのように修正すればよいのでしょうか? また,「__destruct」はどのようにすれば良いのでしょうか?コンストラクタ名とデストラクタ名が同じでよいのでしょうか? よろしくお願いします。 <?php require_once("DB.php"); require_once("Smarty/libs/Smarty.class.php"); class MySmarty extends Smarty { private $_db; public function __construct() { $this->Smarty(); $this->template_dir="../templates"; $this->compile_dir="../templates_c"; $this->_db=DB::connect("sqlite://localhost/samples.db"); } public function __destruct() { $this->_db->disconnect(); } public function getDb() {return $this->_db;} } ?>

    • ベストアンサー
    • PHP
  • クラスの中のクラスへのアクセス

    お世話になります。 クラスが以下のようにあります。 class ClassName1{ var $classname2_obj; // クラス「ClassName2」のオブジェクト function getClassName2Obj(){ return $this->$classname2_obj; } } class ClassName2{ var $array_list; // 配列です  function getArrayList(){ return $this->array_list; } } やりたいのは、ClassName1のgetClassName2Obj関数でClassName2の配列をgetArrayListで取得したいのです。 $a = new ClassName1; $b = $a->getClassName2Obj(); $c = $b->etArrayList(); 上の$b = … と$c = …の部分の処理を一行にまとめることはできないでしょうか? 何卒よろしくお願い致します。 PHPは5です。

    • ベストアンサー
    • PHP
  • 抽象クラスを継承した普通のクラスから、

    抽象クラスを継承した普通のクラスから、 抽象クラス内でprotected宣言したクラスのフィールド(連想配列)へ データをセット&ゲットしてみたいのですが、やり方がよく分かりません。 上記内容を満たす簡単なサンプルを誰か作っていただけないでしょうか。 ちなみに、下記は、自分でやろうとして、頭がこんがらがってしまった例です。 あくまでもイメージですが、 こんな感じで、作成していただけると、うれしいです。 <?php abstract class A1{ protected $data = array();   public function setData($value){ $this->data[$key] = $value; } public function getData($key = null){ if (null == $key) { $this->data; } else { $this->data[$key]; } } } class C1 extends A1{ public function main(){ $this->setData('key1') = 'value1'; $this->setData("キー2") = "値2"; } } $c1 = new C1; $c1 -> main(); var_dump($data); ?>

    • ベストアンサー
    • PHP
  • クラス内で二次元配列は無理なのでしょうか?

    VisualC++ 2005を使っています。 class test{ int ary[10][2]; }; とすると、混合型はサポートされていません。 とエラーになります。 クラス内で二次元配列は無理なのでしょうか?

  • PHPのクラスで定数配列を作りたい

    こんばんわ。 PHP5.6で勉強しています。5.6を選んだのは事例が多いと思ったからです。 文字列の定数配列が作れるならば、クラスの定数配列も作れるだろうと思っていましたが うまくできません。 イメージ的には以下のような感じです。 クラスで定数配列を作成することはできますでしようか? class AnimalItem { protected $_eng ; protected $_jpn ; protected $_deu ; function __construct( $eng, $jpn, $deu ) { $this->_eng = $eng ; $this->_jpn = $jpn ; $this->_deu = $deu ; } } class Foo { // const ANIMALS = array( 'dog', 'cat', 'bird'); const ANIMALS = array( new AnimalItem( 'dog', '犬', 'Hund' ) ,new AnimalItem( 'cat', '猫', 'Katze' ) ,new AnimalItem( 'bird', '鳥', 'Vogel' ) ); }

    • ベストアンサー
    • PHP
  • クラスのメソッド

    inidat.phpに$global_a=3;と書いてありますがクラス内でこれが得られません。 <?php require_once 'inidat.php'; class test5 { var $a; function test5() { $this->a = 'inidat-a=' . $global_a; } } ?>

    • 締切済み
    • PHP
  • クラスについて

    クラスについてご教示下さい。 ------------------------------ main.php ------------------------------ <?php include("./a.php"); include("./b.php"); ・ ・ ・ $a_class = new a; $b_class = new b; $b_class->view_sum; ・ ・ ・ ?> ------------------------------ a.php ------------------------------ <?php class a { VAR $int1 = 10; VAR $int2 = 5; function exec_sum(){ $int_sum = $int1 + $int2; return $int_sum } function XXXXXX(){ ・ ・ ・ } } ?> ------------------------------ b.php ------------------------------ <?php class b { function view_sum(){ ※クラスaのexec_sumを呼び出した結果を表示したい。 print ○○○; } function YYYYYY(){ ・ ・ ・ } } ?> ------------------------------------ として結果として15を表示したいと思っております。 ※あくまでの上記動作の可否を知りたいため、ロジックの構成については仕方なくです。。。すみません。 クラスを宣言するmain.phpではすでにclass_a, class_bで宣言していることが前提となります。 この場合、class_bから、class_aのfunctionを呼び出すにはどうすればよいのでしょうか? そもそも呼び出せるのでしょうか? お忙しいところ申し訳ありませんが、ご教示お願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう