1

我有两张表,一张由 ID 和 FNAME(例如 01 Google)组成,另一个 ID、FIRSTNAME、SURNAME(例如 01 JOHN DOE)。

最后一个数据库中的 ID 将用户与组织连接起来(f.ex Google,此处的 ID 为 01)。

我正在尝试通过 json_encode 将这些转换为 JSON,但我不知道如何将我得到的两个结果联系起来。

用户应该按组织排序。

前任:

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

我真的没有任何代码示例,因为我无法远程工作。我试图将它放入while循环中的数组中,但格式完全错误 - 排序也是如此。

4

2 回答 2

1

就这样你可以开始,

<?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;
?>
于 2013-02-01T14:57:06.683 回答
1

这可能会帮助你,

$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);

以及基于我本地数据库中的条目的相应结果,

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 函数,而不是弃用。

于 2013-02-01T15:19:34.703 回答