2013-06-20 31 views
1

我有一段代碼在本地主機和活動服務器上的處理方式不同。離線和在線服務器進程代碼不同

我不知道爲什麼要改變。

下面是一段代碼:

for($k = 0; $k < count($data['SurveyAnswer']); $k++) { 
    if(isset($data['SurveyAnswer'][$k]['answer']['number'])) { 
     if($data['SurveyAnswer'][$k]['answer']['number'] != '') 
      $data['SurveyAnswer'][$k]['answer'] = $data['SurveyAnswer'][$k]['answer']['number'].','.$data['SurveyAnswer'][$k]['answer']['text']; 
     else 
      $data['SurveyAnswer'][$k]['answer'] = ''; 
     } else if(isset($data['SurveyAnswer'][$k]['answer']['yn'])) { 
    if($data['SurveyAnswer'][$k]['answer']['yn'] == 'No') 
     $data['SurveyAnswer'][$k]['answer'] = 'No,' . $data['SurveyAnswer'][$k]['answer']['text']; 
    else 
     $data['SurveyAnswer'][$k]['answer'] = 'Yes'; 
    } else if(isset($data['SurveyAnswer'][$k]['answer']['scale'])) { 
     $data['SurveyAnswer'][$k]['answer'] = $data['SurveyAnswer'][$k]['answer']['scale'] . ',' . $data['SurveyAnswer'][$k]['answer']['text']; 
    } 
} 

爲了討論各種情形,這是數據:

data = array(
    'SurveyAnswer' => array(
     0 => array (
      'answer' => array(
       'number' => '4', 
       'text' => 'Test text' 
      ), 
     1 => array (
      'answer' => array(
       'number' => '', 
       'text' => '' 
      ), 
     2 => array (
      'answer' => array(
       'yn' => 'No', 
       'text' => 'Test text' 
      ), 
     3 => array (
      'answer' => array(
       'yn' => 'Yes', 
       'text' => '' 
      ), 
     4 => array (
      'answer' => array(
       'scale' => 'Good', 
       'text' => 'Testing text' 
      ) 
     ), 
     5 => array (
      'answer' => '3' 
     ) 
    ) 
); 

這是我本地主機如何改變數據(PHP版本5.4.7在Windows上):

data = array(
    'SurveyAnswer' => array(
     0 => array (
      'answer' => '4,Test text' 
      ), 
     1 => array (
      'answer' => '' 
      ), 
     2 => array (
      'answer' => 'No,Test text' 
      ), 
     3 => array (
      'answer' => 'Yes' 
      ), 
     4 => array (
      'answer' => 'Good,Testing text' 
      ) 
     ), 
     5 => array (
      'answer' => '3' 
     ) 
    ) 
); 

這就是我的直播服務器改變數據(在CentOS PHP版本5.3.23):

data = array(
    'SurveyAnswer' => array(
     0 => array (
      'answer' => '4,4' 
      ), 
     1 => array (
      'answer' => '' 
      ), 
     2 => array (
      'answer' => 'T,T' 
      ), 
     3 => array (
      'answer' => 'Yes' 
      ), 
     4 => array (
      'answer' => 'T,T' 
      ) 
     ), 
     5 => array (
      'answer' => '3' 
     ) 
    ) 
); 

難道是導致該問題的版本差別還是有別的東西。

UPDATE

現實世界的數據,得到這個與CakePHP的調試之前和CakePHP調試的代碼之後:

本地主機

\app\Controller\SurveyAnswersController.php (line 51) (BEFORE) 
array(
    'SurveyAnswer' => array(
     (int) 0 => array(
      'answer' => '1' 
     ), 
     (int) 1 => array(
      'answer' => '2' 
     ), 
     (int) 2 => array(
      'answer' => '3' 
     ), 
     (int) 3 => array(
      'answer' => array(
       'number' => '3', 
       'text' => 'asdfasdfasdf' 
      ) 
     ) 
    ) 
) 

\app\Controller\SurveyAnswersController.php (line 67) (AFTER) 
array(
    'SurveyAnswer' => array(
     (int) 0 => array(
      'answer' => '1' 
     ), 
     (int) 1 => array(
      'answer' => '2' 
     ), 
     (int) 2 => array(
      'answer' => '3' 
     ), 
     (int) 3 => array(
      'answer' => '3,asdfasdfasdf' 
     ) 
    ) 
) 

Web服務器

/app/Controller/SurveyAnswersController.php (line 51) (BEFORE) 
array(
    'SurveyAnswer' => array(
     (int) 0 => array(
      'answer' => '1' 
     ), 
     (int) 1 => array(
      'answer' => '2' 
     ), 
     (int) 2 => array(
      'answer' => '3' 
     ), 
     (int) 3 => array(
      'answer' => array(
       'number' => '3', 
       'text' => 'asdfasdfasdf' 
      ) 
     ) 
    ) 
) 

app/Controller/SurveyAnswersController.php (line 67) (AFTER) 
array(
    'SurveyAnswer' => array(
     (int) 0 => array(
      'answer' => '1,1' 
     ), 
     (int) 1 => array(
      'answer' => '2,2' 
     ), 
     (int) 2 => array(
      'answer' => '3,3' 
     ), 
     (int) 3 => array(
      'answer' => '3,asdfasdfasdf' 
     ), 
    ) 
) 

我縮短了大約100個問題的數據。

+0

你確定你的數據沒有在其他地方被破壞嗎? – claustrofob

+0

是的,我確定。它只會在我上傳時發生變化。我已經上傳了與此功能相關的所有控制器和模型,但它仍然可以。 – Albert

+1

您的數據看起來很奇怪。例如SurveyAnswer [1]和[2]之間至少缺少一個右括號,或者其他內容正在進行中。發佈您使用的實際數據的var_export。 – ExternalUse

回答

0

信不信由你,但它是一個版本問題。更新我的PHP到5.4.x,它工作。