2014-05-17 3 views
2

나는 이것을 처리하기가 거의 당혹 스럽지만 당황스럽고 기한이 만료되었습니다. 아마도 내가 볼 수없는 단순한 오타 일 것입니다.PHP 배열이 평가되지 않음

I는 코드의 다음 세 라인을 ($pPOST 어레이의 일부이다)

echo "<pre>"; 
print_r($p); 
echo "Foo:".$p['fn2']; 

출력이된다.

Array 
(
    ['fn1'] => uobQEC8IGQcd 
    ['fn2'] => P1ZVSXBJzloE 
) 
Foo: 

$p['fn2']가 인쇄되지 않습니까? 이것은 나를 미치게합니다. 이 예제를 줄 였지만 거기에 더 많은 FN이 있고 아무 것도 개별적으로 표시되지 않지만 배열을 덤프 할 때 볼 수 있습니다. Arrrgh!

UPDATE : 제안에 좀 더 많은 코드 ...이 시작되는 foreach 루프 안에 :

foreach ($_POST['pairs'] as $key=>$p) { 

UPDATE 2

VARDUMP :

array(10) { 
    ["'fn1'"]=> string(12) "uobQEC8IGQcd" 
    ["'fn2'"]=> string(12) "P1ZVSXBJzloE" 
    ["'state1'"]=> string(6) "active" 
    ["'state2'"]=> string(6) "active" 
    ["'crit1'"]=> string(2) "27" 
    ["'crit2'"]=> string(2) "24" 
    ["'warn1'"]=> string(2) "18" 
    ["'warn2'"]=> string(2) "12" 
    ["'owner2'"]=> string(5) "Adobe" 
    ["'name2'"]=> string(5) "Rack1" 
} 

UPDATE 3 :이 같은 post 변수 배열을 설정합니다 (js)

$('<input>').attr({ type: 'hidden', name: "pairs["+fn1+"]['fn1']", value:fn1 }).appendTo('form'); 
$('<input>').attr({ type: 'hidden', name: "pairs["+fn1+"]['fn2']", value:fn2 }).appendTo('form'); 

답변

1

두 세트의 따옴표로 묶인 키가있어 정의되지 않은 색인 오류가 발생하기 때문에 작동하지 않는 것 같습니다. 건반 주위에 따옴표 한 쌍을 제거하면 그것을 작동합니다 :

공지 사항을 당신의 키에 : [ " '을 Fn1'"]

<?php 

$p = array ( "state1" => "active", 
       "state2" => "active", 
       "crit1" => "27", 
       "crit2" => "24", 
       "warn1" => "18", 
       "warn2" => "12", 
       "owner2" => "Adobe", 
       "name2" => "Rack1" 
      ); 

    echo "<pre>"; 
    print_r($p); 
    echo "Foo:".$p['state2']; 

?> 

출력 :

<pre>Array 
(
    [state1] => active 
    [state2] => active 
    [crit1] => 27 
    [crit2] => 24 
    [warn1] => 18 
    [warn2] => 12 
    [owner2] => Adobe 
    [name2] => Rack1 
) 
Foo:active 
0

아하! Vardump는 대답을 밝혀 ... 내가 반환 자바 스크립트에서 배열을 설정할 때 내가이 일을했다 : 대신의

$('<input>').attr({ type: 'hidden', name: "pairs["+fn1+"]['fn1']", value:fn1 }).appendTo('form'); 

:

$('<input>').attr({ type: 'hidden', name: "pairs['+fn1+'][fn1]", value:fn1 }).appendTo('form'); 

는 배열 요소의 주위에 작은 따옴표 있었다 안 ...

0

하는 경우 당신은이 방법으로 당신의 HTML을 작성합니다.

<form method="post" action="test.php"> 
    <input name="value[test]"></input> 
    <button type="submit">submit!</button> 
</form> 

이렇게하면 test.php에서 액세스 할 수 있습니다.

var_dump($_POST["value"]["test"]); 

그렇지 않으면 이렇게하십시오.

<form method="post" action="test.php"> 
    <input name="value['test']"></input> 
    <button type="submit">submit!</button> 
</form> 

이것을 시도하면 정의되지 않은 색인 오류가 발생합니다.

var_dump($_POST["value"]["test"]); 

이제 이와 같이 액세스해야합니다.

var_dump($_POST["value"]["'test'"]); 

즉, 따옴표가 자동으로 추가됩니다.