如何在Yii中创建动态关联数组


how to make dynamic associative array in Yii?

我试图使一个动态关联数组,但事情是它只是保存最后的键值对,我怎么能存储所有的键值对?

foreach ($_POST as $var => $value) {

   // Does the model have this attribute? If not raise an error
        if ($model->hasAttribute($var))
            $model->$var = $value;
        elseif ($profile->hasAttribute($var)) {
            $storage = array($var => $value);//associative array
        } else {
            //var_dump ($var);
            $this->_sendResponse(500, sprintf('Parameter <b>%s</b> is not allowed for model <b>%s</b>', $var, $_GET['model']));
        }
    }

您只有以下error:

 $storage = array($var => $value);//associative array

这一行每次都创建一个新的array $storage,这就是为什么你只得到最后一个key value对。

试试这个:

 $storage = array();// initialize it as array
 $storage[$var] = $value;// assign $value in $key index of $storage 

在您的代码中,您总是将$storage分配给一个新数组,而不是追加它。(如果我说错了请指正)。

你应该这样添加数组。

 <?php
foreach ($_POST as $var => $value) {
    // Does the model have this attribute? If not raise an error
    if ($model->hasAttribute($var))
        $model->$var = $value;
    else if ($profile->hasAttribute($var)) {
        if (!is_array($storage))
            $storage = [];
        $storage[$var] = $value; //associative array
    } else {
        //var_dump ($var);
        $this->_sendResponse(500, sprintf('Parameter <b>%s</b> is not allowed for model <b>%s</b>', $var, $_GET['model']));
    }
}