2014-02-12 3 views
-1

이것은 내가 선택한 SQL에서 얻은 것입니다. 데이터가 정확합니다, 지금은 foreach에 의해 그것을 반향하고 싶습니다. 내가 해봤 (어느 작동하지 않았다) 어떤JSON과 배열이 섞여 있습니다 (PHP에서)

Array ([0] => stdClass Object ([sql_column] => [{"1":"value1", "2":"value2", "3":"value3"}])) 

했다 :

$obj = json_decode($arr); 
foreach($obj as $data){ 
echo $data->sql_column->1; //this should echo "value1", but it doesn't 
} 

사람이 내 실수를 볼 수 있습니까? 미리 감사드립니다!

+0

mysql에 JSON을 저장하면 안된다. 엘. – moonwave99

+0

@moonwave 왜 그런가요? 특수 데이터를 포함 할 때 특수 문자 또는 'null'문자를 포함 할 수있는 직렬화 된 배열에 대해 말하면 올바른 것일 수도 있지만 json 배열입니까? 너 자신을 설명하라! –

+1

@ FélixGagnon-Grenier는 정규화 된 데이터를 얻기 위해 _relational_ 데이터베이스를 사용하기 때문에 JSON 문자열을 잘 저장하려는 경우 비정형 스키마로 끝납니다. 발견 할 수없는, unquerable]. 데이터의 작은 비트를 저장해야한다면 다른 점이 있습니다. 그러면 받아 들일 수 있습니다. – moonwave99

답변

1

$arr이 게시 한 배열 인 경우 json_decode은 배열이고 JSON 문자열이 아니기 때문에 json_decode 수 없습니다.

//First you need to get the string 
$json = $arr[0]->sql_column; 
//Then decode 
$data = json_decode($json); 
//Then loop 
foreach($data as $key => $value){ 
    echo "$key = $value \n"; 
} 
1

귀하의 JSON은 (더블 차원 배열) 복잡 할 것 같다,하지만 당신은이 방법으로 그것에서 값을 가져올 수 있습니다 ...

foreach($arr as $data){ 
    $json = json_decode($data->sql_column); 
    $temp = (array)$json[0]; 
    foreach($temp as $k=>$v){ 
     print($v."<br/>"); 
    } 
} 

난 당신이 아이디어를 얻을 희망

나는 다중 값을 다루기 위해 $ ARR을 위해 foreach를 사용했다. 원하는 경우 생략 할 수있다 :

관련 문제