【问题标题】:Codeigniter array to object conversationCodeigniter 数组到对象对话
【发布时间】:2015-09-25 03:22:48
【问题描述】:

我收到此错误“尝试获取非对象的属性”的行

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

用于在同一页面中进行操作

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

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

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

对物体有效吗?

提前致谢。

【问题讨论】:

    标签: php arrays codeigniter


    【解决方案1】:
    $Arr = array(
            'rowid' => $rowid,
            'qty' => 0
        );
    $Obj = (object)$Arr;
    

    这是数组到对象的转换。你想要吗?

    【讨论】:

    • 我试过这样,没用。 $data=array('rowid' => $rowid, 'qty' => 0); $obj=(对象)$data; $this->cart->update($obj);
    【解决方案2】:

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

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

    来自 PHP 手册:

    <?php
      $literalObjectDeclared = (object) array(
         'foo' => (object) array(
              'bar' => 'baz',
              'pax' => 'vax'
          ),
          'moo' => 'ui'
       );
    print $literalObjectDeclared->foo->bar; // outputs "baz"!
    ?> 
    

    小天才小技巧:

    <?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;
        }
    ?>
    

    【讨论】:

    • 我试过这样:但没用。$data=array('rowid' => $rowid, 'qty' => 0 ); $对象=对象; foreach($data as $key=>$value){ $object->{$key}=$value; $this->cart->update($object);
    • 我更新了答案,并添加了一个可行的解决方案。首先测试它。run php online 然后使用它。首先了解它的作用然后实施
    【解决方案3】:

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

    $product = new stdClass();
    

    【讨论】:

    • 这是什么意思?如果我这样做会发生什么?谢谢。
    • 在 $product 之上声明它,你得到的错误是调用一个没有 product_price 属性的对象的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多