2014-04-22 2 views
0

나는 내 솔루션을 함께 시도해 볼 시간을 찾고 있었지만 여전히 어려움을 겪고 있습니다. 나는 PHP로 고투하고 json-encode에서 원하는 형식으로 변환하여 knockout.js를 사용할 수 있습니다.json_encode에 대한 배열 배열

나는이처럼 보이는 DB를 가지고 :

| id | name  | value     | 
| 1 | taskName | First Task    | 
| 1 | taskDetail | Enter your first task | 
| 1 | taskList | Very Important   | 
| 2 | taskName | Second Task   | 
| 2 | taskDetail | Enter your second task | 
| 2 | taskList | Important    | 

내가 같이하기로 json_encode 내 사이트에이 응답을 얻으려고 :

여기
[ 
    { 
    "id": "1", 
    "taskName": "First Task", 
    "taskDetail": "Enter your first task", 
    "taskList": "Very Important" 
    }, 
    { 
    "id": "2", 
    "taskName": "Second Task", 
    "taskDetail": "Enter your second task", 
    "taskList": "Important" 
    } 
] 

내가 가진 무엇 지금까지 :

$user = 1; 

$task_sql = " 
    SELECT * 
    FROM `li_id` 
    INNER JOIN `li_details` 
    ON li_id.id = li_details.id 
    WHERE li_id.user = '" . $user . "'"; 


$result = mysql_query($task_sql, $con); 
$results = array(); 

while ($row = mysql_fetch_assoc($result)) { 
    $results[] = array($row['name'] => $row['value']); 
} 

echo json_encode($results); 

응답 :

,536,
[ 
    { 
    "taskName": "First Task" 
    }, 
    { 
    "taskDetail": "Enter first task in application." 
    }, 
    { 
    "taskList": "Important" 
    }, 
    { 
    "taskName": "Second Task" 
    }, 
    { 
    "taskDetail": "Enter second task in application." 
    }, 
    { 
    "taskList": "Very Important" 
    } 
] 

문제는 ID로 개별 배열로 그룹화하는 방법을 파악할 수 없다는 것입니다. 나는 여러 가지를 시도했지만 행운이 없었다. 다른 스레드에 대한 팁이나 방향은 정말 좋습니다. 감사!

+0

귀하의 테이블 구조 (데이터베이스) 잘못된 그들의 ID에 중첩 된 모든 필드를해야합니다 ? 무엇 때문에? ID는 자동 증분이어야합니다. 왜 당신의 테이블 구조는 그런가? – Linek

+0

id, taskName 및 taskDetail 속성을 사용하여 PHP 클래스를 만듭니다. 페치 루프에이 클래스의 인스턴스 배열을 만듭니다. 직렬화하십시오. – Saturnix

+0

새 항목이 추가 될 때마다 자동으로 증가하는 테이블이 있습니다. 이 테이블의 id는 해당 항목과 다시 연관되므로 각 속성이 어느 속성에 적용되는지 알고 있습니다. –

답변

1

이런 일에 대해 어떻게 :

while ($row = mysql_fetch_assoc($result)) 
{   
    if (!isset($results[$row['id']])) $results[$row['id']] = array(); 
    $results[$row['id']][$row['name']] = $row['value']); 
} 

을 그리고 당신이 그것을로 json_encode 후에는

, 당신은 3에 하나 개의 항목을 분할
+1

형식은 게시 한 내용과 약간 다릅니다.하지만 여전히 필요한 부분에 대한 매력처럼 작동했습니다. 고맙습니다!! –

+1

다음은 다른 사람들이 볼 수있는 결과입니다 : { "1": { "taskName": "첫 번째 작업", "taskDetail": "응용 프로그램의 첫 번째 작업 입력", "taskList": "중요"}, "2" : { "taskName": "두 번째 작업", "taskDetail": "응용 프로그램에서 두 번째 작업 입력", "taskList": "Very Important"}} –