사용자라는 테이블이있는 MySQL 데이터베이스가 있는데 배열로 만들어야합니다. 그러나 중복 값을 처리 할 수 있어야합니다.
중복 값을 찾으면 하나의 키 아래의 값을 결합합니다. user_id 열에있는 값의 결합 만 필요합니다. 이것은 전자 상거래 사이트가 될 것이고 사람들은 한 번에 둘 이상의 항목을 구입할 수 있기 때문입니다.
이것은 내 데이터베이스, 특히 큐라는 테이블의 모습입니다.
Table Queue:
user_id, item_id
100, 103850
100, 103850
100, 129374
101, 303213
101, 103850
그래도 다음과 같은 배열을 반환하려면 필요합니다.
array(
100 => array(
'items' => array(
array('item_id' => 103850),
array('item_id' => 103850),
array('item_id' => 129374),
),
),
101 => array(
'items' => array(
array('item_id' => 303213),
array('item_id' => 103850),
),
),
);
이제 이것은 제가 지금 사용하고있는 코드입니다. 제가 전에 물어 본 다른 질문에서 얻은 코드이지만 제 질문에 완전히 답하지 못했습니다.
<?php
function getAllUsers() {
$data_from_db = array(
100 => array(
'items' => array(
array('item_id' => 103850),
array('item_id' => 103850),
array('item_id' => 129374),
),
),
101 => array(
'items' => array(
array('item_id' => 303213),
array('item_id' => 103850),
),
),
);
// while loop fetch to array blah blah
$users = $data_from_db;
return $users;
}
if(isset($_GET['jsoncallback'])) {
$data = getAllUsers();
header('Content-Type: application/json');
echo json_encode($data);
exit;
}
?>
위 코드의 문제점은 PHP 스크립트에 수동으로 입력되고 MySQL 쿼리를 사용하여 생성되지 않는다는 것입니다. MySQL 쿼리를 사용하여 생성하고 싶지만 그렇게하는 방법을 파악하는 데 많은 문제가 있습니다.
간단한 쿼리 만하면됩니다. 이 예를 따르십시오.
function getAllUsers() {
$data = array();
// host - username - password - database
$connection = new mysqli('localhost', 'test', 'test', 'test');
$query = mysqli_query($connection, 'SELECT `user_id`, `item_id` FROM `table_queue`');
while($row = $query->fetch_assoc()) {
$data[$row['user_id']]['items'][] = array('item_id' => $row['item_id']);
}
return $data;
}
if(isset($_GET['jsoncallback'])) {
$data = getAllUsers();
header('Content-Type: application/json');
echo json_encode($data);
exit;
}
?>
를 호출 http://yoursite.com?jsoncallback
하면 다음과 같은 메시지가 표시됩니다.
{"100":{"items":[{"item_id":"103850"},{"item_id":"103850"},{"item_id":"129374"}]},"101":{"items":[{"item_id":"303213"},{"item_id":"103850"}]}}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다