Codeigniter数组到对象会话

时间:2015-09-25 03:22:48

标签: php arrays codeigniter

我收到此错误"试图获取非对象的属性"对于行

'price' => $product->product_price,
'name' => $product->product_name

在同一页面中进行

    function remove($rowid) {
  $this->cart->update(array(
        'rowid' => $rowid,
        'qty' => 0
    ));
}

我可以解决这个问题,通过这样做,'price' => $product['product_price'],总线作为我的其他页面使用'price' => $product->product_price它们就好了,所以我不想将它转换为数组, 我的问题是如何将$this->cart->update(array(转换为对象,以便这些行

'price' => $product->product_price,
'name' => $product->product_name

对象效果如何?

提前致谢。

3 个答案:

答案 0 :(得分:0)

$Arr = array(
        'rowid' => $rowid,
        'qty' => 0
    );
$Obj = (object)$Arr;

这是将Array转换为Object。你想要吗?

答案 1 :(得分:0)

您将结果分配给数组。然后尝试将数组用作对象。接下来,返回的结果也是一个数组,您尝试将其用作对象。

您可以将数组转换为对象的更智能方法

来自PHP手册:

<?php    
// assuming $var is a multidimensional array
$obj = json_decode (json_encode ($var), FALSE);
?>

小天才黑客:

<?php    
$array = array(
    // ...
    );
    $object = (object) $array;
?>

因此您可以通过将数组转换为对象进行转换:

<?php    
$object = object;
    foreach($arr as $key => $value)
    {
    $object->{$key} = $value;
    }
?>

如果您需要手动方式,则可以执行此操作:

//gulp.js in the root folder
var elixir = require('laravel-elixir');

var browserify  = require('browserify');

elixir(function(mix) {

    mix.sass(['app.scss'], 'public/css');
});

elixir(function(mix) {

    mix.browserify(['app.js'], 'public/js');
});

答案 2 :(得分:0)

将$ product定义为新的标准类:

$product = new stdClass();