我一直试图解决这个问题几天了。我需要将一个值数组放入一个主数组中,而这一切都必须来自SQL语句
public function fetchAllRest()
{
$db = $this->getAdapter();
$sql = $db->select()->from(array('c' => $this->getTableName()), array('id', 'personalId', 'name', 'number', 'email'))
->join(array('pd' => $this->getTableName('personal_data')), 'pd.personalId = c.personalId', array('street', 'zipcode', 'place'));
$results = $this->getAdapter()->fetchAll($sql);
return $results;
}
下面的代码生成一个包含个人数据连接的所有记录的数组(因此,如果我有5条记录,我将获得5条记录的数组)。
现在我想让join语句(personal_data部分)成为另一个数组的数组的一部分,所以现在我们有:
[
{1},
{2},
{3},
{4},
{5}
]
每个值包含一个(5 + 3)值的数组(在这种情况下,JSON带有键/值对),这应该成为:
[
{1
{"personal_data" : "name", "number", "email"}
},
{2
{"personal_data" : "name", "number", "email"}
},
{3
{"personal_data" : "name", "number", "email"}
},
{4
{"personal_data" : "name", "number", "email"}
},
{5
{"personal_data" : "name", "number", "email"}
}
]
原始数组中的自定义命名值,其值为'personal_data',包含该记录的所有personal_data。
我尝试循环遍历每个SQL,但它产生了太多语句导致一些mysql-bytes-error
任何解决方案?
提前致谢
编辑:我尝试了以下内容:foreach($results as $r) {
$results[$i]["personal_data"] = array('personalDataId' => $results[$i]['personalDataId'],
'name' => $results[$i]['name'],
'number' => $results[$i]['number'],
'email' => $results[$i]['email'];
$i++;
}
return $results;
太糟糕了,这并没有按照我想要的方式解决,导致为了访问数组中的值,他们必须在那里(导致数据已经在哈希中的子数组)。我现在正在考虑删除这些多余的数据,但删除最初添加的数据听起来非常不方便
答案 0 :(得分:1)
获得$results
后尝试此操作:
$jsonArray = array();
foreach ( $results as $result ) {
$jsonArray[] = array( 'personal_data' => array(
'id' => $result->id,
'name' => $result->name,
'street' => $result->street,
...
));
}
return $jsonArray;