1

在我的页面上的各个地方,我在 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;编辑:斯宾塞,威廉;打印机:琼。海耶斯

但随后我需要尝试将字符串拆分为各种子字符串,以便在我的输出表中标题 Author 下仅输出 Origen。通过数组 $roles[] 并将名称分隔到该角色的新数组中更好吗?所以

if ($roles[role] == "Author") 
    $author[] = $roles[party_name]; 

每个角色都有某种形式的迭代?但是我需要为角色指定每个可能的值,以防它被包含在这个特定的记录中,这会使代码很长。

肯定有更好的方法可以在这里进行,我只是还没有找到它。有人有什么想法吗?

4

1 回答 1

2
$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);
}

不知道是不是你的意思?

于 2011-01-27T16:44:43.923 回答