私は CodeIgniter 2 のプロジェクトに取り組んでいますが、今は最も基本的な概念に固執しています。
モデル:
という名前のフィールドの特定の値に一致するすべての行を含むテーブルからオブジェクト配列を取得しますfoo
。一致する行が 1 つ以上存在する場合があります。この例では、2 行です。
public function get_sample($foo)
{
$query = $this->db->get_where('sample_db', array('foo' => $foo));
return $query->result();
}
コントローラ:
結果を割り当て、出力を表示できるようにします。
public function view($foo)
{
$data['array'] = $this->sample_model->get_sample($foo);
$this->load->view('view', $data);
}
意見:
echo var_dump($array); // for testing
echo $array[1]->text
var_dump()
の$array
:
array(2) {
[0]=> object(stdClass)#23 (4) {
["id"]=> string(1) "1"
["foo"]=> string(3) "bar"
["number"]=> string(4) "1234"
["text"]=> string(23) "This is content in 1234"
}
[1]=> object(stdClass)#24 (4) {
["id"]=> string(1) "2"
["foo"]=> string(3) "bar"
["number"]=> string(4) "9999"
["text"]=> string(23) "This is content in 9999"
}
}
のレンダリングされた出力echo $array[1]->text;
は次のとおりです。This is content in 9999
そして、それがどのように機能しているかを理解してい ます。これは、2 番目のオブジェクトである のインデックスを持つ配列オブジェクトのフィールド$array[1]->text
の内容です。text
1
ただし、呼び出されたフィールドがあり、特定のオブジェクトにアクセスして、対応する値を取得しnumber
たいと考えています。number
text
例:text
where の値を取得するにはどうすればよいnumber
です9999
か? $array[1]->text
配列内のオブジェクトの位置を確認できないため、使用できません。のようなものです$array['number' => '9999']->text
が、それが正しくないことはわかっています。たぶん、配列をループして一致を探す必要がありますか?
これは非常に単純に見えますが、私が試したことはすべて失敗し、さまざまな PHP エラーが発生しました。私は PHP のマニュアルをこことここで勉強していますが、自分がやろうとしていることについて何も見つけられないようです。任意のガイダンスをいただければ幸いです。
MVC モデルに従ったベスト プラクティスを使用した回答に加えて、ドキュメントの適切なページへのリンクと、上記の文言/用語の誤りを指摘することを望んでいます。
編集:
この回答には、問題を解決するために使用した実際のコードが含まれています。しかし、八木の答えは私を正しい方向に導いたので受け入れられました。