Это базовый порядок операций.PHP не знает, хотите ли вы какое-нибудь динамическое свойство $this
строки или свойство $this->tbl_fields[0]
строки.
Попробуйте это:
<?php
$this->tbl_rest[] .= '<li id="'.$row->{$this->tbl_fields[0]}.'">'.$row->{$this->tbl_fields[1]}.'</li>';
Кроме того, я бы хотелрекомендуем определять свойство модели $tbl_fields
как статическое или постоянное, так как оно не изменяется во время выполнения или для конкретных экземпляров класса:
<?php
Class Account extends CI_Model {
private static $tbl_fields = array('bs_id', 'bs_name', 'bs_type', 'bs_sub');
// ...
$this->tbl_rest[] .= '<li id="'.$row->{self::$tbl_fields[0]}.'">'.$row->{self::$tbl_fields[1]}.'</li>';
// ...
}
Кроме того, жестко кодируемый массив ссылается на определенныеИмена столбцов несколько контрпродуктивны, если только вы не знаете, что [0] всегда будет идентификатором, а [1] всегда будет именем (в этом случае вы также можете установить статический префикс для имен столбцов и использовать еговместо массива $tbl_fields
.
Еще лучше, потому что все, что вы здесь делаете, это пара ключ / значение (я предполагаю, что вы хотите повторно использовать этот шаблон для других методов API ...)Вы можете просто выбрать поля так, как вы хотите их использовать.Вот что я бы порекомендовал:
<?php
Class Account extends CI_Model {
private $tbl_rest = array();
private static $col_prefix = 'bs_';
function get_data($dataid){
$this->db->select(array(
self::$col_prefix.'id AS key',
self::$col_prefix.'name AS value'
));
$this->db->from( $this->tbl_name );
$this->db->where( $this->tbl_key, $id );
$query = $this->db->get();
if( $query->num_rows() > 0 )
{
foreach ($query->result() as $row)
{
$this->tbl_rest[] .= '<li id="'.$row->key.'">'.$row->value.'</li>';
}
echo( json_encode( array( 'tdata' => $this->tbl_rest ) ) );
} else {
echo( false );
}
}
}