Php 脱机和联机服务器处理代码的方式不同
我有一段代码在本地主机和live服务器上得到不同的处理 我不知道为什么或者该改变什么 下面是一段代码:Php 脱机和联机服务器处理代码的方式不同,php,arrays,Php,Arrays,我有一段代码在本地主机和live服务器上得到不同的处理 我不知道为什么或者该改变什么 下面是一段代码: for($k = 0; $k < count($data['SurveyAnswer']); $k++) { if(isset($data['SurveyAnswer'][$k]['answer']['number'])) { if($data['SurveyAnswer'][$k]['answer']['number'] != '') $
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'];
}
}
这就是我的localhost更改数据的方式(Windows上的PHP版本5.4.7):
这就是我的实时服务器如何更改数据(CentOS上的PHP版本5.3.23):
可能是版本差异导致了问题,还是有其他原因
更新
真实世界的数据,在代码之前和之后通过CakePHP调试获得:
localhost
\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'
)
)
)
webserver
/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个问题。信不信由你,但这是一个版本问题。将我的PHP更新为5.4.x,它运行正常。你确定你的数据没有在其他地方损坏吗?是的,我确定。它只有在我上传的时候才会改变。我已经上传了所有与此功能相关的控制器和模型,但它仍然可以。您的数据看起来很奇怪。例如,SurveyAnswer[1]和[2]之间至少缺少一个结束括号,或者正在进行其他操作。发布您使用的实际数据的var_导出。问题已更新。我正在将我的PHP安装更新到最新版本。希望这能解决问题
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'
)
)
);
\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'
),
)
)