2016-10-01 109 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' 
// ) 
//)