0

从一个名为$data的变量开始,它是一个包含一个对象的关联数组,其打印值为:

Array
(
    [item] => stdClass Object
        (
            [id] => 1
            [tipo] => 0
            [idioma] => es
            [nombre] => Artí­culo de prueba
            [titulo] => Esto es un artí­culo de prueba
            [alias] => articulo-de-prueba
            [texto] => Lorem ipsum etc etc
            [url] => 
            [video] => 
            [fecha_c] => 2012-11-27 10:50:37
            [fecha_m] => 2012-11-27 17:00:00
            [fecha_p] => 2012-11-28 00:00:00
            [destacado] => 0
            [status] => 1
        )

    [imagenes] => Array
        (
        )

)

我需要过滤它的值并将其分配给另一个数组,这样:

protected function load_form($data = '') {
        $this->load->helper('form');

        // If item data have been sent, pass it to the form view to edit it.
        // Else display empty form for new item.
        if (! empty($data)) {
            // Data can be an associative array with an object and another array or just an object           
            if (array_key_exists('item', $data)) {
                $this->_vars['item'] =& $data['item'];
            }
            else {
                $this->_vars['item'] =& $data;
            }
            if (array_key_exists('imagenes', $data)) {
                $this->_vars['imagenes'] = $data['imagenes'];
            }
        }

        $view = $this->load->view(ADMIN_FORMS_PATH . $this->_controller . '_form', $this->_vars, true);

        /*DEBUG*/ echo $view; // just for debugging purposes
}

第一个分配产生这些错误:

遇到 PHP 错误严重性:通知消息:未定义索引:项目文件名:核心/Admin_Controller.php 行号:205

遇到 PHP 错误 严重性:通知消息:stdClass 类的对象无法转换为 int 文件名:core/Admin_Controller.php 行号:205

它的行为就像项目索引不存在,但确实存在。此外,它尝试将对象转换为整数。

为什么会发生,我应该怎么做才能解决它?

编辑:

我在做 &= 而不是 =&。这就是错误的原因。

无论如何,问题仍然存在,代码似乎停止了。

编辑2:

试图重新定义问题。它可能与 CodeIgniter 相关,所以我添加了整个函数,包括 CodeIgniter 函数。

load_form() 方法可以从创建新项目的请求中调用,在这种情况下 $data 为空,或者从编辑给定项目的请求中调用(在 $data 中)。在第一种情况(创建)中,执行调试行,但在第二种情况(版本)中不执行。

4

2 回答 2

0

这可能是你的问题。快结束时你有“$datos['imagenes'];” 它应该是“$data['imagenes'];”

if (! empty($data)) {
    // Data can be an object, or an array with object + array of images            
    if (array_key_exists('item', $data)) {
        $this->_vars['item'] &= $data['item'];
    }
    else {
        $this->_vars['item'] = $data;
    }
    if (array_key_exists('imagenes', $data)) {
        $this->_vars['imagenes'] = $data['imagenes'];
    }
}
于 2012-12-05T20:58:09.243 回答
0

问题解决了。这太简单了。

它在视野之内。我试图回应:

$项目['id']

代替

$item->id

项目数据作为对象而不是数组被检索。它默默地导致了问题,没有任何警告、通知或错误。

无论如何,我感谢您的快速帮助。

于 2012-12-05T22:41:20.177 回答