1

我正在为学校创建一个网站。

我有一个学生的科目保存在数据库中。

它是这样保存的--> 1,2,3,6,7

这意味着学生 X 的科目 ID 为 1、2、3、6 和 7

一名学生的科目从一个变量 $subjects 的数据库中返回我想输出科目名称(科目名称也存储在数据库中)。但是由于 $subjects 中返回的变量不是一个主题,而是多个主题,所以我无法搜索主题名称。是否可以将 $subjects 转换为数组,以便在我的示例中 $subjects[0] 为 1 而 $subjects[1] 为 2(见上文@它是这样保存的)。

简单地说:它不应该是 $subjects = 1,2,3,6,7 而是

$subjects[0] = 1
$subjects[1] = 2
$subjects[2] = 3
$subjects[3] = 6
$subjects[4] = 7
4

2 回答 2

2

您可以使用explode将字符串转换为数组:

explode(',', $students);

然而,应该注意的是,爆炸然后对数据库进行更多查询以获取主题名称是一种非常低效的方法。而不是将学生科目存储在一个字段中,您应该为该关系创建一个完整的表。因此,除了 Student 表和 Subjects 表之外,您还有以下关系:

表:StudentSubjects

Student | Subject
-----------------
   1    |   1
   1    |   2
   1    |   3
   1    |   6
   1    |   7
   2    |   2
   2    |   4
   2    |   6
   2    |   8
   3    |   3

然后,您可以查询您的数据库,并在一次查询中获取特定学生或一组学生的主题名称列表。

于 2013-08-28T20:48:41.510 回答
0

您可以选择2种方式:

爆炸:

<?php
$str = '1,2,3,6,7';
$chars = explode(',', $str);
print_r($chars);
?>

或 preg_split:

<?php
$str = '1,2,3,6,7';
$chars = preg_split('/,/', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?>
于 2013-08-28T20:50:15.580 回答