优化mysql和php的查询

时间:2013-03-07 04:36:30

标签: magento magento-1.7

我的表包含id,名称和值等字段,如(1,“sony,nokia,htc”),(2,“sony”)(3,“Samsung”)。我获取记录,但我的逻辑是比我的期望还要长。如果它包含“,”我想要取消名称,并获取唯一记录。我的结果看起来像

Name array will be { 0 =>"sony",1=>"HTC",2=>"Nokia"}.My dummy logic is here (This is incomplete not working properly.)
<?php 
$row = array("sony,htc,nokia","htc","sony");
    foreach ($row as $key => $valuek) {
                 if(strpos($valuek['value'], ",") !== false)
                 {
                  $str[] = explode(",",$valuek['value'] )
                    ?>
                    <option value="<?php echo $valuek['value']?>"><?php echo $valuek['value']?></option>
                   <?php 
                 }

            ?>
       <option value="<?php echo $valuek['value']?>"><?php echo $valuek['value']?></option>
       <?php  } $i++;}?>

1 个答案:

答案 0 :(得分:0)

你不需要爆炸

在您获得所有数据并存储在数组中的开始时,您可以使用array_unique()

$row = array("sony,htc,nokia","htc","sony"); // all fetch data from db.


 $row = implode(',',$row); // first convert the array -> strings
 $row = explode(',',$row); // then return back to array and you can now use array_unique
 $row = array_unique($row);  // this will filter all data with uniqueness and drop some data that have same value

然后你可以用它来循环数据。

 for($i=0;$i<count($row)){
     echo '<option value="'.$row[$i].'">'.$row[$i].'</option>';
 }

这将使您的代码更短,更易于管理..