#php #mysql
#php #mysql
Вопрос:
У меня есть три столбца, которые имеют одинаковые значения для двух строк. Я хочу напечатать только одну из одной и той же строки из двух одинаковых строк, используя оператор цикла php while. Вот как данные
ID values
1 MINI
1 MINI
2 MINI
Я хочу напечатать все это, но только один раз с одинаковыми строками на основе идентификатора
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;
}
}
}
Это то, над чем я пытаюсь работать, но, похоже, это работает не так, как ожидалось, мне понадобится помощь в этом. Большое спасибо.
Ответ №1:
Когда я делаю подобные вещи, я использую переменную «Предыдущий идентификатор», в данном случае $ PRID, чтобы проверить, является ли идентификатор дубликатом. 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;
}
}
}
Ответ №2:
просто попробуйте вариант 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'
// )
// )