使用 PHP 和 MySQL。
我有一个表(类别),仅包含三个字段:id、名称、父级。
其中 parent 在根类别上为 0,如果派生自另一个类别,则为整数。
但是我们可以在其中有多个级别,例如:
id, name, parent
01, Name 01, 00
02, Name 02, 00
03, Name 03, 00
04, Name 04, 02
05, Name 05, 01
06, Name 06, 01
07, Name 07, 05
08, Name 07, 05
09, Name 09, 04
10, Name 10, 07
11, Name 11, 10
我们如何返回一个包含根及其所有子节点的数组?例如,对于 id=1,数组应为:
array (
1 => array(
id => 1,
name => 'Name 1'
),
5 => array(
id => 5,
name => 'Name 5'
),
6 => array(
id => 6,
name => 'Name 6'
),
7 => array(
id => 7,
name => 'Name 7'
),
8 => array(
id => 8,
name => 'Name 8'
),
10 => array(
id => 10,
name => 'Name 10'
),
11 => array(
id => 11,
name => 'Name 11'
)
);
我看过这个link并尝试了一些变化,但我还没有成功。
最佳答案
这个 SQL 查询应该会得到你想要的数据:
SELECT DISTINCT c.id as id, c.name as name FROM category c, category s WHERE s.parent = $id OR c.id = $id;
然后你可以使用mysqli_fetch_assoc
获取您需要的数组的一部分。如果您需要数组索引与 SQL 索引相匹配,那么您可以迭代 mysqli_fetch_assoc 的结果并将其放入新数组中:
$target = array();
while ( $row = mysqli_fetch_assoc( $result ) ) {
$target[$row["id"]] = $row;
}
关于php - 指定具有根类别和子类别的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14777733/