Работя върху проект в CodeIgniter 2 и сега съм заседнал на най-основните концепции.
Модел:
Вземете обектен масив от моята таблица, който съдържа всички редове, които съответстват на конкретна стойност за поле с име foo
. Може да има един или повече редове, които съвпадат. В този пример два реда.
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
И разбирам как работи всичко това: $array[1]->text
е съдържанието на полето text
в обекта на масива с индекс на 1
, моят втори обект.
Имам обаче поле, наречено number
, и искам да осъществя достъп до обекта с определен number
и да получа съответната му text
стойност.
Пример: Как мога да извлека стойността на text
, където number
е 9999
? Не мога да използвам $array[1]->text
, тъй като никога не мога да бъда сигурен в позицията на обекта в масива. Нещо като $array['number' => '9999']->text
, но знам, че не е правилно. Може би трябва да превъртя масива в търсене на съвпадение?
Това изглежда толкова просто, но всичко, което опитах, се провали и доведе до различни PHP грешки. Изучавах ръководството за PHP тук и тук, но не мога да намеря нищо за това, което искам да направя, или може би просто неправилно прилагам това, което чета. Всякакви насоки се оценяват.
В допълнение към отговор, използващ най-добрите практики, следващи модела MVC, надявам се на връзка към правилната страница в документацията, както и да посоча всички грешки в моята формулировка/терминология по-горе.
РЕДАКТИРАНЕ:
Този отговор съдържа действителния код, който използвах, за да реша проблема си. Въпреки това отговорът на Yagi беше приет, защото ме насочи в правилната посока.