私のローカルホストとライブサーバーで異なる方法で処理されるコードがあります。
なぜ、何を変更する必要があるのか わかりません。
コードの一部は次のとおりです。
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'
)
)
);
これは私のローカルホストがデータを変更する方法です (Windows 上の PHP バージョン 5.4.7):
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'
)
)
);
問題の原因となっているのはバージョンの違いでしょうか、それとも何か他のものがありますか。
アップデート
実世界のデータは、コードの前に 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'
)
)
)
ウェブサーバー
/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問程度なのでデータを短くしています。