繁体   English   中英

在php循环中打印相同的行一次

[英]Print same rows as once in php while loop

我有三个列,其中两个行具有相同的值。 我想使用php while循环语句从两个相同的行中只打印同一行中的一行。 这就是数据的方式

ID   values
1     MINI
1     MINI
2     MINI

我想打印所有这些,但只打印一次基于ID的相同行

 ID    Values
  1     MINI
  2     MINI

我实际上可以在mysql查询中使用DISTINCT OR GROUP BY来查找上面的预期答案,但我真的需要使用php while语句。

这就是我一直在努力的方法

$query="SELECT * from table";
$sR=$db->query($query);

$array=array();

while($sRow=mysqli_fetch_assoc($sR)){
   $ID=$searchRow['ID'];
   $values=$searchRow['Values'];

   $array[$ID][]=$ID;   
   $array2[$ID][]=$values;  
}

foreach($array as $ID => $item){
    $value=$array[$ID];
    foreach($item as $newItem){
        if($newItem===$newItem){
           echo '---'.$newItem;
           break;
        }
    }
}

这是我正在尝试的东西,但它似乎没有按预期工作,我需要帮助。 非常感谢soo。

当我做这样的事情时,我使用“Previous ID” - 变量,在这种情况下是$ PRID,来检查ID是否重复。 必须按ID对SQL查询进行排序才能使其正常工作。

$query="SELECT * FROM table ORDER BY ID";
$sR=$db->query($query);

$array=array();

$PRID=0;
while($sRow=mysqli_fetch_assoc($sR)){
   $ID=$searchRow['ID'];
   $values=$searchRow['Values'];
   if($ID>$PRID){
      $array[$ID][]=$ID;   
      $array2[$ID][]=$values;  
   }
   $PRID=$ID;
}

foreach($array as $ID => $item){
    $value=$array[$ID];
    foreach($item as $newItem){
        if($newItem===$newItem){
           echo '---'.$newItem;
           break;
        }
    }
}

只需尝试选项1或选项2

$query="SELECT * FROM table ORDER BY ID";
$sR=$db->query($query);

$array = array();

// first option, expected output
// array(
//   0 => 'value',
//   1 => 'value'
// )
foreach($sR as $value) {
  $array[$value['ID']] = $value['Values'];
}

var_dump($array);

$array2 = array();
// second option
foreach($sR as $value) {
  $array2[$value['ID']] = array(
    'ID' => $value['ID'],
    'Value' => $value['Value']
  );
}

var_dump($array2);
// expected output
// array(
//  0 => array(
//    'ID' => 0,
//    'Value' => 'value'
//  ),
//  1 => array(
//    'ID' => 1,
//    'Value' => 'value'
//  )
// )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM