我想将一个查询中的数据合并到具有一对多关系的另一个查询的结果中。这种关系将是一个任务对许多卡片。
我想创建这样的东西:
Array
(
[0] => Array
(
[id] => 1
[name] => open
[task] => Array
(
[0] => Array
(
[id] => 2
[project_id] => 1
[name] => task 2 from pro1
[card] => 1
)
)
)
)
用这个:
阵列1:
Array
(
[0] => Array
(
[id] => 1
[name] => open
)
)
阵列2:
Array
(
[0] => Array
(
[id] => 2
[project_id] => 1
[name] => task 2 from pro1
[card] => 1
)
)
假设数组1是卡片数组,数组2是任务数组。有多张卡片和任务。我需要在它所属的卡上设置一个任务,这就是为什么我在两个数组中都有一个卡ID。如果卡片数组的id为1,而任务的[card] => 1,则任务在该数组中被设置。
下面是我的代码:
$get_card_qry = "select * from tts_card where project_id = '1' ";
$get_card_res = $conn -> query($get_card_qry);
$cad = $task = array();
while($row = $get_card_res -> fetch_assoc())
{
array_push($cad, $row);
$get_task_qry = "select * from tts_task where card = '".$row['id']."' ";
$get_task_res = $conn -> query($get_task_qry);
while($row1 = $get_task_res -> fetch_assoc())
{
array_push($task , $row1);
}
}
2条答案
按热度按时间6vl6ewon1#
使用常规
foreach
循环的简单解决方案:输出:
bvhaajcl2#
在SQL中将数据关联到行中,然后在PHP中使用临时第一级id来形成多维数组。
在第一次遇到卡ID时,创建父数组。所有遇到给定卡id的情况,将任务数据推入父数组。循环结束后,用
array_values()
删除分组键。代码:(PHPize Demo)