2013-10-10 48 views
0

我有表單提交根據調查結果重定向。在着陸頁上,我調用一個函數來處理查詢字符串,查詢數據庫並返回結果作爲數組進行頁內處理。未設置未清除陣列鍵/值

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 ...

我在這裏錯過了什麼?

謝謝

+1

PHP變量不會保持它們從一次運行到下一次運行的值,每次加載頁面時都會重新開始。所以其他事情必須繼續。發佈您的實際代碼而不是僞代碼。 – Barmar

+0

更新了上面的代碼,我原本認爲這可能是問題,但不明白這是如何使'$ survey ['name'] ['q_fname'] = $ q_first_name;'是持久的。 – macgregor

+0

我測試了以下內容以確定輸出: 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

回答

1

我是macgregor,我是個白癡。錯過了查詢中的關鍵條件。

+0

我完全贊同這個解決方案。 – deceze

+0

非常感謝 – macgregor