0

我想将清单数组存储到数据库中的字符串中。下面是界面中的代码,显示房间列表以及每个房间的下拉清单。

while($rows = mysql_fetch_array($query)){
          <!-- Apply dropdown check list to the selected items  -->
    <script type="text/javascript">
    $(document).ready(function(){$("#<?php echo $bnum; ?>").dropdownchecklist( { width: 300 } );});
     </script>  

         <!-- This is the JQuery Dropdown checklist !-->                     
        <select id="<?php print $bnum;?>" multiple="multiple" name="dietdata[]" >
                     <option value="0"></option>

         <?php  
          //query drop-down list
         $sqlakh="select diet_id,diet_name from bmsdb.diettypes";
         $resultakh=mysql_query($sqlakh);
         while($rowsakh= mysql_fetch_array($resultakh)) { ?>
        <option  value='<?php echo $rowsakh['diet_id'].'|'.$bnum; ?>'><?php echo $rowsakh['diet_name']; ?>            
        </option>
         <?php }

}//end while ?>

</select>`

当我在服务器端提交此表单时,这就是我从下拉清单的数组中提取数据的操作:

      $data2 = $_POST['data2']; //total no of data
  $dietdata= $_POST['dietdata']; //diet data
  $roomlist= $_POST['data3']; //patient room number


  for($k=0; $k<=sizeof($data3); $k++){

  $dietarray= $dietdata[$k];

  $separatediet= (explode('|',$dietarray));

  $output_array[]=array("diet"=>$separatediet['0'],"room"=>$separatediet['1']);

   for($j=0; $j<=sizeof($data3); $j++){

   if($output_array[$k][room]== $roomlist[$j]){

     $rekod[$output_array[$k][room]]= $output_array[$k][diet];

    }
      }
     }print_r($rekod);

我提交表单时的print_r输出是这样的:

Array ( [501] => 3 [502] => 4 [] => )  

然后我提取implode用于分隔房间和饮食类型的数组。

Array ( [0] => 2|501 [1] => 3|501 
        [2] => 3|502 [3] => 4|502 )

我想要的是数组是这样的。有什么方法可以让我的数组变成这样,或者使用更好的结构吗?

Array ( [501] => 2,3) //2,3 is the diet type group together after being extracted from the array above
        [502] => 3,4 )
4

2 回答 2

1

假设您将所有代码保持到您要内爆以生成最终数组的程度:

Array ( [0] => 2|501 [1] => 3|501 
    [2] => 3|502 [3] => 4|502 )

您可以像这样创建您要求的数组:

$out = array(); // The final output array

foreach ($your_array as $item) {
  $vals = explode('|', $item);
  if (!isset($out[$item[1]])) $out[$item[1]] = array();
  $out[$item[1]][] = $item[0];
}

foreach ($out as &$item) {
  $item = implode(',', $item);
}
于 2013-05-25T05:32:02.330 回答
0

这是我的最终代码。像这样的发电机输出

Array ( [501] => 2,3,4 [502] => 3,4 [503] => 5,6 ) 

感谢芙蓉的帮助。

    $out = array(); // The final output array

    foreach ($status as $item) {

    $vals = explode('|', $item);

    if (!isset($out[$vals[1]])) $out[$vals[1]] = array();
    $out[$vals[1]][] = $item[0];
    }

    $item=array();
    foreach ($out as &$item) 
    {
         $item = implode(',', $item);
    }
         $diet = array();
         $data3 = $_POST['data3'];

    for($h=0; $h<=$data2; $h++)
    { 
         $data3 = $_POST['data3']; //patient bnum
         $data3 = $data3[$h];//bnum
         if(!empty($out[$data3]))
    {
         $diet[$data3] = $out[$data3];
    }
 }  print_r($diet);
于 2013-05-28T11:02:40.973 回答