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

5hcedyr0  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(130)

我试图创建一个动态关联数组,但问题是它只保存了最后一个键值对,我如何存储所有的键值对?

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']));
        }
    }
y3bcpkx1

y3bcpkx11#

您只有以下error

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

这一行每次都会创建一个新的array$storage,这就是为什么您只能获得最后一个keyvalue对。
试试看:

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

4sup72z82#

在你的代码中,你总是把$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']));
    }
}

相关问题