2013-09-04 5 views
0

필자는 PHP로 JSON을 성공적으로 디코딩 할 수있었습니다 (생각했던 것만 큼 고통스럽지는 않지만). 실제 PHP를 수행 한 이후로 오랜 시간이 걸렸습니다. 내 두뇌가 비어 있습니다. 다음과 같은.PHP에서 디코딩 된 JSON 구문 분석

는 디코딩 된 JSON이

[Array] 
item { 
     [0] 
     { 
     [live]=> 
     [name]=>Paul 
     [value]=>10 
     } 
     [1] 
     { 
     [live]=>1 
     [name]=>Fred 
     [value]=>32 
     } 

에 난 데 문제는이처럼 보이는 - 내가 먼저 테스트 구조를 반복하기 위해 노력하고있어 경우 라이브 == 1 그런 다음 첫 번째 라이브 이름 인 경우 HTML 드롭 다운에 선택한 값으로 출력합니다. 나는 현재이

$t = 0; 
$count = 0; 
foreach($decode['items'] as $option=>$value) 
{ 
print_r("option = $option\n"); 
    if ($option=>isLive == 1) 
{ 
    print_r("isLive is true for $option[$count]['names']\n"); 
     if ($t == 0) 
     { 
     echo "<option value=$option[name] selected>$value[name]</option>"; 
     $t = 1; 
    } 
    else 
     echo "<option value=$option[name]>$value[name]</option>"; 
    } 
    else 
    { 
    print_r("isLive is false for $option[$count]=>name\n"); 
    } 
    $count++; 
} 

같은 시도하고

문제는 내가이 일을 위해 올바른은 if 문을 얻을 수있을 것 없다는 것입니다. 이것은 아마도 심각하게 간단한 문제 일 것이며 의심의 여지없이 나를 얼굴 손바닥으로 만들 것입니다. 그러나 여기에 올바른 방향으로 포인터를 사용할 수 있습니다!

+0

'$의 option', 당신은 '에 대한 키 찾고있는 경우 ($ 값 ['라이브 '] == 1)' – six8

+0

'경우 ($ 가치 -> 라이브 == 1 &&의 $ 옵션 = = 0)'나는 당신이 원하는 것을 생각하고있다. –

+1

'$ value [ 'live'] == 1' (또는 질문에서 불분명 한 객체 인 경우'$ value-> live')로 만드십시오. 또한,'$ option => isLive'는 유효하지 않은 구문입니다. 우리가 작업하고있는 것을 보여 주셔서 감사하네요. 최소한 코드 예제가 컴파일되었는지 확인하십시오. – Jon

답변

0

json이 우리에게 보여 주듯이 배열에 items이라는 키가 없기 때문에 foreach를 사용하여 아무 것도 반복 할 수 없습니다. 이 트릭을 할해야 제공된 구조를 사용

:

foreach($decode["item"] as $item) { 
    if($item->live == 1) { 
     ... 
    } else { 
     ... 
    } 
} 

$item 경우 객체를 사용 $item['live'] 대신하지 않습니다.

추신 : 정말로 error_reporting을 켜야합니다. $option=>isLive은 유효한 구문이 아닙니다.

0
$t = 0; 
$count = 0; 

$arr = json_decode($json,true); 
foreach($arr as $key=>$val) 
{ 
    print_r($key); 
    if($val['live']) 
    { 
    if($t == 0) 
    { 
    echo '<option value='.$val['name'].' selected>'.$val['name'].'</option>'; 
    $t = 1; 
    } 
    else 
    { 
    echo '<option value='.$val['name'].'>'.$val['name'].'</option>'; 
    } 
    } 
    else 
    { 
    echo $key.' not printed cause it hasn\'t live set to true'; 
    } 
    $count++; 
} 
+1

항목에 isLive 키가 없습니다. –

+0

그는 자신의 질문을 편집했는데 ... (지금 내 대답을 편집했습니다) –