将值从数组结果存储到codeigniter中的变量

时间:2013-02-22 10:16:39

标签: php codeigniter

我有以下控制器,

class mycontroller extends CI_Controller
{
   public function getvalue() {
        $q= $this->db->select(array('value'))
                          ->from('settting')
                          ->get();
         $data['data']= $q->result();
             $this->load->view('myview',$data); 
    }

}

在我看来:

的print_r($数据);

提供这样的输出

Array ( [0] => stdClass Object ( [value] => wwwwwwwwwwww ) [1] => stdClass Object ( [value] => 5454546 ) [2] => stdClass Object ( [value] => 6868 ) [3] => stdClass Object ( [value] => 9898 ) [4] => stdClass Object ( [value] => 7878 ) [5] => stdClass Object ( [value] => 212 ) [6] => stdClass Object ( [value] => 87878 ) [7] => stdClass Object ( [value] => 8989 ) [8] => stdClass Object ( [value] => 212 ) ) 

我正在尝试将每个单值存储在变量

当我使用时,

foreach($data as $row)
{
   echo $row->value;
}

它给了我所有的价值,但我需要将每个值保存在变量中。

我该怎么做呢 像这样,

$var1='wwwwwwwwwwww'; // [0 ] array value  
$var2='5454546';      // [1]  array value

6 个答案:

答案 0 :(得分:4)

最好将它保存到另一个数组

$my_values = array();
foreach($data as $row)
{
   $my_values[] = $row->value;
}

现在你有:

echo $my_values[0]; // wwwwwwwwwwww
echo $my_values[1]; // 5454546

答案 1 :(得分:4)

打印查询变量时,

print_r($query);

你会得到以下结果

Array ( [0] => stdClass Object ( 
               [Id] => 14 
               [username] => john 
               [password] => e10adc3949ba59abbe56e057f20f883e 
               [email] => john@gmail.com 
               [key] => 7f55570435fd15393f27eaac659b078a 
               [is_active] => 1 
               [gender] => Man 
               [countryid] => 1 
               [stateid] => 4 
               [cityid] => 4 
               [age] => 31 
       ) ) 

因此,如果您想从此数组中获取单个元素的值,可以编写以下代码 -

echo $query[0]->username;

然后你得到以下值

john

我希望这可以解决你的问题。我相信你可能已经找到了答案。但是我遇到了同样的问题,所以我认为它可能对某些人有帮助。

答案 2 :(得分:1)

您可以尝试这样

class mycontroller extends CI_Controller
{
   public function getvalue() {
        $q = $this->db->select(array('value'))
                  ->from('settting')
                  ->get()
                  ->result_array();
        $i = 0;
        foreach($q as $val)
        {
            ${'var' . ++$i} = $val['value']; // Here we put each value in new variable, with variable name var1, var2, ...
        }
        echo $var1;
        echo $var2;
        $this->load->view('myview',$data); 
    }
}

答案 3 :(得分:1)

你的策略是完全错误的。您正在从控制器调用db调用,该控制器会破坏MVC规则。为此创建一个模型。

Class Value Extends CI_Model{

function __construct(){
    parent::__construct();
}

function getValue(){
return $this->db
            ->select(array('value'))
            ->from('settting')
            ->get();
            ->result();

}

现在从控制器中调用它

class mycontroller extends CI_Controller
{
   $this->load->model('value');
   public function getvalue() {

        $data['value']= $this->value->getValue();   
        $this->load->view('myview',$data); 
    }
}

现在在视图中

foreach($value as $row)
{
    echo $row;
}

答案 4 :(得分:0)

Look数组包含“stdClass Object”对象。所以你需要将对象转换为数组。所以转换使用,

$data= $q->result();
$data['data']=$data->result_array();  or $data->row_array();

答案 5 :(得分:0)

使用一些临时变量循环遍历结果以构造变量。但我不知道将数组值存储在单独的变量中的用法是什么: - )

$i = 0;
 foreach($data as $row)
{
  $var_.$i = $row->value;
  $i++;
}