0

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++;}?>
4

1 に答える 1

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>';
 }

これにより、コードが短くなり、管理が容易になります..

于 2013-03-07T04:42:42.087 に答える