人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのクラスの配列の値をシンプルに取得したいのですが方法がわかりません。

PHPで以下のクラスを作成します。

$obj = new DB_Table();
$obj->table = 'hana';

$obj->dbList();

$obj->dbList()の値が仮に
array('1'=>'ume','2'=>'sakura','3'=>'kiku')とします。

3のキーの値「kiku」を出力したいのですが

$obj->dbList()[3];

とするとエラーで出力できません。

$array = $obj->dbList();
echo $array[3];

とすれば「kiku」が出力できるのですが余計な作業が挟まり
シンプルではありません。

$obj->dbList()から一発で「kiku」を出力するにはどのように記述すれば良いのでしょうか?

ご教授のほど宜しくお願いいたします。

●質問者: gelgelgel
●カテゴリ:インターネット ウェブ制作
✍キーワード:echo HANA PHP Sakura エラー
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● あすか
●10ポイント

ご質問のスクリプトは途中が省略されていると思うのですが、下記のようにしてみてください。

<?php
class DB_Table {
 var $table, $dbList;
}
$obj = new DB_Table();
$obj->table = 'hana';
echo $obj->table;
echo '<br />';
$obj->dbList = array('1'=>'ume','2'=>'sakura','3'=>'kiku');
echo $obj->dbList[3];
?>

2 ● あすか
●10ポイント

追伸


もしclass内で配列を定義したいのであれば、下記のようになります。

<?php
class DB_Table {
 var $table;
 var $dbList = array('1'=>'ume','2'=>'sakura','3'=>'kiku');
}
$obj = new DB_Table();
$obj->table = 'hana';
echo $obj->table;
echo '<br />';
echo $obj->dbList[3];
?>
◎質問者からの返答

ご回答ありがとうございます。

省略し過ぎで分かりにくくなったのかと思いますが、私の質問の意図と違っています。

$obj->dbList();は設定する値ではなくクラスから返される値です。

class DB_Table {

public function dbList(){

if($this->table == 'hana'){

return array('1'=>'ume','2'=>'sakura','3'=>'kiku');

}

}

}

$obj = new DB_Table();

$obj->table = 'hana';

$obj->dbList();

ということです。この$obj->dbList();から一発で「kiku」を出力したいのです。

※このクラスはあくまでの例なのでこんなクラス自体を使用する必要性自体がないといったご回答はお控えください。


3 ● la-la-land
●10ポイント

echo(array_pop($obj->dbList()));

これで取り出せます。

◎質問者からの返答

ご回答ありがとうございます。

確かに取り出せるのですが、これだと末尾しかダメですよね・・

任意のキーから取り出すための記述があればそれを知りたいのです。


4 ● la-la-land
●10ポイント
function getVal(&$item, $key, $index)
{
 if ($key==$index) {
 echo($item);
 }
}

$obj = new DB_Table();
$obj->table = 'hana';

array_walk($obj->dbList(), 'getVal', 2);

これでどうでしょうか。

◎質問者からの返答

ご回答ありがとうございます。

質問内容にありますように「記述方法」が知りたいのです。

関数を利用する方法出あれば私もわかります。

あくまでも$obj->dbList()[3];のような記述から出力したいのです。


5 ● zero-uhura
●80ポイント ベストアンサー

未検証ですが、どうかな?

class DB_Table {

public function dbList($index = null){

$array = array(1=>'ume', 2=>'sakura', 3=>'kiku');

if($this->table == 'hana'){

if ($index !== null) {

if (array_key_exists($index, $array)) {

return $array[$index];

} else {

return false; // 対象のインデックスない場合の処理

}

} else {

return $array;

}

}

}

}

... 省略 ...

echo $obj->dbList(2); // sakura が出力

◎質問者からの返答

ご回答ありがとうございます

なるほど!!こういう設定の仕方もあるのですね。

知りたかった方法と違いますが、要件満たせました!!

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ