我正在使用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'"
}
的在我的數組值已經改變了,我不知道爲什麼?
有什麼建議嗎?
要麼在'find'調用中修改'$ filters',要麼'pr()'函數的行爲發生變化。你能顯示'$ filters'來自哪裏,直到源代碼?如果將'$ filters'複製到其他變量名稱並執行相同的測試,會發生什麼情況? – 2010-06-10 11:16:14
我添加了額外的註釋,改變變量名稱沒有什麼區別 – Lizard 2010-06-10 11:42:29
'$ filters'(現在'$ myArr')是一個傳遞給這個函數的數組 – Lizard 2010-06-10 11:44:08