【发布时间】:2013-10-18 21:04:51
【问题描述】:
我提交的表单会根据调查结果进行重定向。在登陆页面上,我调用了一个函数来处理查询字符串,查询数据库并将结果作为数组返回以进行页内处理。
function surveyResults() {
if($goodtogo) {
$survey = $wpdb->get_results(...,ARRAY_A);
$name_has_space = strpos(trim($q_name_field[0]),' ');
if($name_has_space === false) {
$q_first_name = $q_name_field[0];
$name_has_num = preg_match('/[0-9]/',$q_first_name);
$q_first_name = ((0 === $name_has_num) ? " ".ucfirst($q_first_name).", " : '');
} else {
$q_first_name = substr(trim($q_name_field[0]),0,$name_has_space);
$name_has_num = preg_match('/[0-9]/',$q_first_name);
$q_first_name = ((0 === $name_has_num) ? " ".ucfirst($q_first_name).", " : '');
}
$survey['name']['q_fname'] = $q_first_name;
$results = $survey;
} else {
$results = false;
}
return $results;
}
输出:
Array (
[0]=> Array (
'key' => 'value'
)
...
[n]=> Array (
'key' => 'value'
)
['name'] => Array (
[q_fname] => MyName
)
)
这是完美的——除了——每次我测试页面时,$survey[0-n] 结果会根据查询发生变化,但$survey['name']['q_fname'] 仍保持之前的值MyName。
我尝试在设置$results = $survey; 后立即添加unset($survey['name']['q_fname']);,但这似乎没有什么不同。我需要unset($results) 还是使用参考&$fname...
我在这里错过了什么?
谢谢
【问题讨论】:
-
PHP 变量不会从一次运行到下一次保持它们的值,每次加载页面时一切都会重新开始。所以肯定有其他事情发生。发布您的实际代码而不是伪代码。
-
更新了上面的代码,我最初认为这可能是问题,但不明白这如何使
$survey['name']['q_fname'] = $q_first_name;持久化。 -
我测试了以下内容以确定输出: if($name_has_space === 0) { $q_first_name = '0'; } 其他 { $q_first_name = '假'; } $name_has_num = preg_match('/[0-9]/',$q_first_name); if(0 === $name_has_num) { $q_first_name = '0'; } 其他 { $q_first_name = $name_has_num;测试了没有空格和数字,输出改变了,但是当我回到原始代码时,之前的值就显示出来了。仔细检查了数据库,没有这样的记录,所以我完全感到困惑。