在php中解决数组问题

时间:2012-09-29 09:14:53

标签: php

我上面有这个代码,我用它来破坏一些变量。 问题是我需要为$hostess_name[]创建与$hostess_id_selected[]相同的内容。 我不知道我做错了什么。 我需要以与$hostess_id_selected1

相同的方式破坏它
 foreach($hostess_id as $val) {
   $hostess_id_selected[] = $val;
   $sqlnomehostess="SELECT nome_hostess FROM hostess where id='$val'";
   $resultnomehostess=mysql_query($sqlnomehostess)or die(mysql_error());
   $hostess_name= array();

   while ($row=mysql_fetch_array($resultnomehostess,MYSQL_ASSOC)) {
     $hostess_name[] = $row['nome_hostess'];
   }
 }

 $hostess_id_selected1 = implode("-",$hostess_id_selected);

2 个答案:

答案 0 :(得分:2)

你有$ hostess_name = array();在循环内。把它移到上面

修改

一些提示:

 foreach($hostess_id as $val) {
   $hostess_id_selected[] = $val;
 // this is pointless, i mean - you are recreating $hostess_id

顺便说一下,只需要一点改进 - 而不是运行许多SQL查询,您可以使用单个查询:

$sql = "SELECT GROUP_CONTACT(`nome_hostess` SEPARATOR '-') AS name_list 
        FROM `hostess` 
        WHERE id IN (".implode(',',$hostess_id).")";

如果$ hostess_id中的项目不一定是数字:

$sql_ids = array();
foreach($hostess_id as $id)
    $sql_ids[] = mysql_real_escape_string($id);
$sql = "SELECT GROUP_CONTACT(`nome_hostess` SEPARATOR '-') AS name_list 
        FROM `hostess` 
        WHERE id IN (".implode(',',$sql_ids).")";

之后:

sql查询返回1行,其中一列名为“name_list”,其中包含以“ - ”连接的名称。

如果你想维护id和名字的顺序 - 你应该这样做:

$sql = "SELECT 
             GROUP_CONTACT(`nome_hostess` SEPARATOR '-') AS name_list,
             GROUP_CONTACT(`id` SEPARATOR '-') AS id_list 
        FROM `hostess` 
        WHERE id IN (".implode(',',$hostess_id).")";

答案 1 :(得分:0)

implode是php的基本功能。它总是很完美。 只需检查你的数组$ hostess_id_selected,它返回什么。 我认为它会对你有帮助。