在页面的不同位置,我在while循环中使用mysql_fetch_array()将值复制到一个新的PHP数组中。在此基础上,我使用implode()将值写入一个字符串中,以显示给用户。当我只处理一列或两列时,这对我来说工作得很好,这两列可以合并到一行中显示。
现在,我正在处理一个包含两部分数据的数组,角色和名称。我想根据角色的值在不同的行上显示输出字符串。这是一个图书馆数据库,所以我希望所有与作者角色相关的名称在一行上,出版商角色的名称在另一行上,依此类推。
$sql = mysql_query("select role, party_name from vw_roles where publication_id =
$id order by role", $link);
while($role = mysql_fetch_array($sql)) {
$roles[] = $role[role] . ": ". $role[party_name]; }
$the_roles = implode(" ; ", $roles);
输出:作者: Origen;书商: Gulielmus Morden;书面文本评论员: Tarin,Jean;书面文本评论员: Hoeschel,David;编辑: Spencer,William;印刷者: Joan。海耶斯
但是,我需要尝试将字符串拆分成不同的子字符串,以便在标题Author下的输出表中只输出Origen。是否更好的做法是遍历数组$roles[]并将名称分隔到该角色的新数组中?所以
if ($roles[role] == "Author")
$author[] = $roles[party_name];
对每个角色进行某种形式的迭代?但是,我需要为role指定每个可能的值,以防它被包含在这个特定的记录中,这会使代码非常长。
这里肯定有更好的方法,我只是还没能找到它。有人有什么想法吗?
发布于 2011-01-28 00:44:44
$sql = mysql_query("select role, party_name from vw_roles where publication_id =
$id order by role", $link);
while($role = mysql_fetch_array($sql)) {
$roles[$role[role]][] = $role[party_name]; }
foreach($roles as $role => $values) {
echo "Role ".$role.": " implode(" ; ", $values);
}
不确定这是不是你的意思?
https://stackoverflow.com/questions/4819021
复制相似问题