2016-10-01 89 views
1

我有三个colums,其中两行的值相同。我想使用php while循环语句只打印两行中同一行中的一行。这是该数据是如何在php while while循环中打印相同的行

ID values 
1  MINI 
1  MINI 
2  MINI 

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

ID Values 
    1  MINI 
    2  MINI 

我居然可以使用DISTINCT或GROUP BY在MySQL查询找到上面的预期答案,但我真的需要使用一个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; 
     } 
    } 
} 

我手中这就是我在想的手,但它似乎并没有按预期工作,我需要它的帮助。非常感谢哟。

回答

0

当我做这样的事情时,我使用“以前的ID”变量,在这种情况下,$ PRID来检查ID是否重复。 SQL查询必须通过ID进行排序才能完成此工作。

$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; 
     } 
    } 
} 
0

只是尽量选择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' 
// ) 
//)