gpt4 book ai didi

php - 数组值意外变化

转载 作者:行者123 更新时间:2023-11-29 09:18:53 24 4
gpt4 key购买 nike

我正在使用 cakephp 1.2,并且我有一个数组,即使该变量没有被操作,它的值似乎也发生了变化。下面是给我带来麻烦的代码。

请注意 - 更新更改变量名称不会对结果产生任何影响。

function findCountByString($string, $myArr=array()) {

$main_conditions['or'] = array();
$main_conditions['or']['Article.title LIKE '] = '%'.$string.'%';
$main_conditions['or']['Article.html_content LIKE '] = '%'.$string.'%';
$conditions['and'][] = $main_conditions;
$filter_conditions['or'] = array();
if(count($myArr) > 0) {
# UPDATE NUMBER 2
# if I comment out the below line everything is fine, this makes no sense!!!
$filter_conditions['or']['ArticleEntity.entity_id'] = $myArr;
$conditions['and'][] = $filter_conditions;
}

echo "Start of findCountByString()";
var_dump($myArr);

$test = $this->find('count', array(
'conditions' => $conditions,
'joins' => array('LEFT JOIN `articles_entities` AS ArticleEntity ON `ArticleEntity`.`article_id` = `Article`.`id`'),
'group' => 'Article.id'
));

echo "End of findCountByString()";
var_dump($myArr);

return $test;

}

我得到以下输出:

Start of findCountByString()

array(4) {
[0]=>
string(36) "4bdb1d96-c680-4c2c-aae7-104c39d70629"
[1]=>
string(36) "4bdb1d6a-9e38-479d-9ad4-105c39d70629"
[2]=>
string(36) "4bdb1b55-35f0-4d22-ab38-104e39d70629"
[3]=>
&string(36) "4bdb25f4-34d4-46ea-bcb6-104f39d70629"
}

End of findCountByString()

array(4) {
[0]=>
string(36) "4bdb1d96-c680-4c2c-aae7-104c39d70629"
[1]=>
string(36) "4bdb1d6a-9e38-479d-9ad4-105c39d70629"
[2]=>
string(36) "4bdb1b55-35f0-4d22-ab38-104e39d70629"
[3]=>
&string(38) "'4bdb25f4-34d4-46ea-bcb6-104f39d70629'"
}

我的数组中的值已更改,但我不知道为什么?

有什么建议吗?

最佳答案

可能 $filters 是一个引用,并且它在方法调用中被更改,或者 pr 本身具有状态/副作用。可以通过删除对 pr 的调用并将其替换为 var_dump 来消除第二个选项。

您的代码片段没有提供足够的信息。这里最好的选择是调试器。

编辑:最后一个元素是一个引用(可能是 foreach 引用的剩余部分)。修复构建数组的代码,以便它不会在最后一个元素中留下引用。

关于php - 数组值意外变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3013803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com