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」を出力するにはどのように記述すれば良いのでしょうか?
ご教授のほど宜しくお願いいたします。
未検証ですが、どうかな?
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 が出力
ご質問のスクリプトは途中が省略されていると思うのですが、下記のようにしてみてください。
<?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]; ?>
追伸
もし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」を出力したいのです。
※このクラスはあくまでの例なのでこんなクラス自体を使用する必要性自体がないといったご回答はお控えください。
echo(array_pop($obj->dbList()));
これで取り出せます。
ご回答ありがとうございます。
確かに取り出せるのですが、これだと末尾しかダメですよね・・
任意のキーから取り出すための記述があればそれを知りたいのです。
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];のような記述から出力したいのです。
未検証ですが、どうかな?
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 が出力
ご回答ありがとうございます
なるほど!!こういう設定の仕方もあるのですね。
知りたかった方法と違いますが、要件満たせました!!
ありがとうございました。
ご回答ありがとうございます
なるほど!!こういう設定の仕方もあるのですね。
知りたかった方法と違いますが、要件満たせました!!
ありがとうございました。