PHP : 이상한 배열 문제 - 내 가치는 어디에 있습니까?
-
06-09-2019 - |
문제
$ _post의 일부 정보를다시피하는 배열 ($ form)이 있습니다.
$form = $_POST['game'];
이제이 배열의 값으로 작업하고 싶지만 어떻게 든 실패합니다.
디버깅을 위해이 명령을 사용했습니다 (정확히 동일한 순서로, 여분의 선이없는 경우) :
print_r($form);
echo '#' . $form['System_ID'] . "#";
그리고 반환 된 출력으로 나는 다음을 얻는다 :
Array
(
['Title'] => Empire: Total War - Special Forces
['Genre_ID'] => 1
['Type'] => Spiel
['System_ID'] => 1
)
##
내 System_id가 어디로 갔는지 아이디어가 있습니까? 그것은 print_r에 있지만, echo의 다음 줄에는 없습니까?!?
해결책
좋아, 나는 솔루션을 내 자신을 찾았다 (일명 D 'Oh!)
나는 다른 것을 추가했다
var_dump($form);
추가 분석을 위해 이것이 내가 얻은 것입니다.
array(4) {
["'Title'"]=>
string(34) "Empire: Total War - Special Forces"
["'Genre_ID'"]=>
string(1) "1"
["'Type'"]=>
string(5) "Spiel"
["'System_ID'"]=>
string(1) "1"
}
이중 인용문 안에있는 단일 인용문을 주목하십니까?
HTML 양식으로 단일 견적을 사용할 수없는 경우에 표시됩니다. 또는 배열 키에 포함됩니다.
Wrong: <input type="text" name="game['Title']" />
Correct: <input type="text" name="game[Title]" />
다른 팁
print_r ()는 키 주위에 따옴표를 넣지 않습니다 - 디버깅을 위해서는 print_r을 전혀 권장합니다. var_export 또는 var_dump가 더 좋습니다.
더 나은 : 사용 Firephp. 헤더를 통해 디버그 정보를 보내므로 출력이 엉망이되지 않으므로 Ajax에서도 사용할 수 있습니다. 출력은 데이터 구조에 대한 구문 색칠을 포함하여 Firebug로 잘 표시됩니다.
그리고 사용하기가 더 쉽습니다 fb($myvar);
그것은 나를 위해 작동합니다 :
<?
$form['System_ID'] = 1;
print_r($form);
echo '#' . $form['System_ID'] . '#';
?>
산출:
% php foo.php
Array
(
[System_ID] => 1
)
#1#
페도라 코어 10에서 PHP 5.2.6
편집 - 실제 원인에 대한 힌트가 있습니다. 내 코드에서 print_r
출력 (올바르게)은 주위에 단일 따옴표가없는 배열 키를 보여줍니다. 원래 포스터의 열쇠 했다 그들 주위에 인용문이 있습니다 print_r
출력, 실제 키에 어떻게 든 인용 표시가 포함되어 있음을 보여줍니다.