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'
        )
    )
);

これは私のローカルホストがデータを変更する方法です (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問程度なのでデータを短くしています。

4

1 に答える 1

0

信じられないかもしれませんが、これはバージョンの問題でした。PHP を 5.4.x に更新すると、うまくいきました。

于 2013-06-20T14:28:29.627 に答える