小编Gad*_*eem的帖子

将PHP中的引用添加到数组会创建一个引用数组

不确定这是否被视为错误

$array = ['numbers' => [1, 2, 3]];
foreach ($array as &$numbers) {
    $numbers = [4, 5, 6];
}
var_dump($array);
modify_array($array);
var_dump($array);

function modify_array($array_arg)
{
    $array_arg['numbers'] = [1, 2, 3];
}
Run Code Online (Sandbox Code Playgroud)

打印

array(1) {
  ["numbers"]=>
  &array(3) {
    [0]=>
    int(4)
    [1]=>
    int(5)
    [2]=>
    int(6)
  }
}
array(1) {
  ["numbers"]=>
  &array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,$ array未通过引用传递给modify_array(),但嵌套数组已被修改.这听起来合乎逻辑,但不确定是否记录在案!

php arrays foreach pointers reference

7
推荐指数
1
解决办法
70
查看次数

使用isNewRecord的Yii复合主键

我有一个带有复合键的mysql表(user_id,category_id); 我正在尝试更新这些记录的最后一次访问,如下所示

$userCategory = new UserCategory;
$userCategory->user_id = 1;
$userCategory->category_id = 15;
echo $userCategory->isNewRecord; //always true
$userCategory->last_access = Now();

$userCategory->save();
Run Code Online (Sandbox Code Playgroud)

{$ userCategory-> isNewRecord}当我尝试save()时,MySQL会为复合主键生成重复错误.

我还将此添加到UserCategory模型但没有帮助

public function primaryKey() {
        return array('user_id', 'category_id');
    }
Run Code Online (Sandbox Code Playgroud)

****更新:对不起,请注意.我的问题是如何在Yii框架中实现与"ON DUPLICATE KEY UPDATE"相同的结果.换句话说,如何在一个SQL查询中插入或更新.如果你看一下save()的源代码

public function save($runValidation=true,$attributes=null)
{
    if(!$runValidation || $this->validate($attributes))
        //checking if new record
        return $this->getIsNewRecord() ? $this->insert($attributes) : $this->update($attributes);**
    else
        return false;
}
Run Code Online (Sandbox Code Playgroud)

php mysql yii

6
推荐指数
2
解决办法
3999
查看次数

标签 统计

php ×2

arrays ×1

foreach ×1

mysql ×1

pointers ×1

reference ×1

yii ×1