PHP – получить данные от db до JSON

У меня есть две таблицы, одна из которых состоит из ID и FNAME (например, 01 Google), другого идентификатора, FIRSTNAME, ФАМИЛИЯ (ex 01 JOHN DOE).

Идентификатор в последней базе данных соединяет пользователя с организацией (f.ex Google с идентификатором 01 здесь).

Я пытаюсь получить их в JSON через json_encode, но я не могу из-за любви ко мне понять, как я могу связать два результата, которые я получаю.

Пользователи должны сортироваться по организации.

Пример:

{"Google":["John Doe","Paul"],"Microsoft":["Bill Gates"]} 

У меня действительно нет кода-примера, так как я не могу ничего получить, чтобы работать удаленно. Я пытаюсь помещать его в массивы во время цикла, но формат идет не так – так происходит сортировка.

Просто чтобы вы могли начать,

 <?php $outArr = array(); $arr1 = array(0 => array('ID' => '01', 'FIRSTNAME' => 'Google')); $arr2 = array(0 => array('ID' => '01', 'FIRSTNAME' => 'JOHN', 'SURNAME' => 'DOE'), 1 => array('ID' => '01', 'FIRSTNAME' => 'NewJOHN', 'SURNAME' => 'NewDOE')); foreach ($arr1 as $key => $compArr) { $companyId = $compArr['ID']; $outArr[$compArr['FIRSTNAME']] = ''; foreach ($arr2 as $arr2key => $employeeArr) { if ($employeeArr['ID'] == $companyId) { $outArr[$compArr['FIRSTNAME']][] .= $employeeArr['FIRSTNAME']; } } } echo json_encode($outArr); exit; ?> 

Это может помочь вам,

 $res = mysql_query('SELECT * FROM employee em LEFT JOIN organization org ON em.id = org.empid'); $op = array(); while($row = mysql_fetch_assoc($res)) { print_r($row); if(!isset($op[$row[org]])){ $op[$row[org]] = array(); } array_push( $op[$row[org]], $row['fname']." ".$row['lname']); } echo json_encode($op); 

и соответствующий результат, основанный на записи в моем локальном db,

 Array ( [id] => 1 [fname] => john [lname] => doe [sno] => 1 [empid] => 1 [org] => Google ) Array ( [id] => 2 [fname] => will [lname] => smith [sno] => 2 [empid] => 2 [org] => Microsoft ) Array ( [id] => 3 [fname] => abdul [lname] => raseed [sno] => 3 [empid] => 3 [org] => Google ) {"Google":["john doe","abdul raseed"],"Microsoft":["will smith"]} 

Примечание: DDL будет выглядеть следующим образом:

 /*DDL Information*/ ------------------- CREATE TABLE `employee` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `fname` VARCHAR(256) DEFAULT NULL, `lname` VARCHAR(256) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 CREATE TABLE `organization` ( `sno` INT(11) NOT NULL AUTO_INCREMENT, `empid` VARCHAR(10) NOT NULL, `org` VARCHAR(256) DEFAULT NULL, PRIMARY KEY (`sno`) ) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 

Узел: попробуйте использовать последнюю функцию mysql вместо устаревших.