我有表單提交根據調查結果重定向。在着陸頁上,我調用一個函數來處理查詢字符串,查詢數據庫並返回結果作爲數組進行頁內處理。未設置未清除陣列鍵/值
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變量不會保持它們從一次運行到下一次運行的值,每次加載頁面時都會重新開始。所以其他事情必須繼續。發佈您的實際代碼而不是僞代碼。 – Barmar
更新了上面的代碼,我原本認爲這可能是問題,但不明白這是如何使'$ survey ['name'] ['q_fname'] = $ q_first_name;'是持久的。 – macgregor
我測試了以下內容以確定輸出: if($ name_has_space === 0){q0_first_name ='0'; } else { \t $ q_first_name ='false'; } $ name_has_num = preg_match('/ [0-9] /',$ q_first_name); if(0 === $ name_has_num){ \t $ q_first_name ='0'; } else { \t $ q_first_name = $ name_has_num; \t} 經過測試,沒有空格和數字,輸出也改變了,但是一回到原來的代碼,就顯示了以前的值。雙重檢查了數據庫,沒有這樣的記錄,所以我完全困惑。 – macgregor