php for loop внутри цикла foreach, не знаю, как это сделать

0

Я пытаюсь сделать цикл for внутри цикла foreach.

У меня есть таблица в моей базе данных:

ID        | Fname | Lname
------------------------
1          Bart    Simpson
1          Mickey  Mouse
2          Peter   Griffin
2          Clark   Kenet
2          David   Johnson

я вызываю данные из базы данных (и она работает, протестирована на phpmyadmin), я хочу, чтобы данные отображались на странице по значению ID для примера:

Барт Симпсон, Микки Маус и Питер Гриффин

Кларк Кенет и Дэвид Джонсон

как вы видите там в "&" до последнего имени в любой строке, но это не моя проблема.

это код, который я написал:

//HERE I RETRIVE ALL THE DATA FROM THE DATABASE.
$query = $dbh->query(" SELECT *
        FROM table
        WHERE ID= '{$ID}'
        ");   

//THIS CODE SHOWS THE NUMBER OF ROWS WITH THE CURRENT ID 
        $sql    = "SELECT COUNT( * ) FROM table WHERE ID= '{$ID}'";
        $result = $dbh->prepare($sql);
        $result->execute();
        $number_of_rows = $result->fetchColumn();

//THIS IS THE FOREACH IN WHICH I CALL ALL THE ROWS BY THEIR VALUE
          foreach ($query as  $key =>$value) {
                   $value['wFname'][$key] = !empty($value['wFname'][$key]) ? $value['wFname'][$key] : '';                      
$numRow = $number_of_rows-2; // THE ITEM BEFORE THE LAST ONE IN THE ARRAY
$lastItem = $number_of_rows-1; //LAST INDEX IN THE ARRAY
for($counter = 0; $counter = $numRow; $counter++){
 return  $value['wLname'][$counter] . ', '.  $value['wFname'][$counter];
  }
   return  "&" . $value['wLname'][$lastItem] . ', '.$value['wFname'][$lastItem] ;
   return ' ';

                };

с этим кодом я получаю только первую пару имен с каждым id. любая помощь была бы большой.

Теги:
for-loop
foreach

1 ответ

1
Лучший ответ

Попробуйте изменить:

for($counter = 0; $counter = $numRow; $counter++){

чтобы:

for($counter = 0; $counter =< $numRow; $counter++){

Вы проверяете, равен ли $ counter $ numRow, и вы должны проверить, равно ли оно и меньше...

Надеюсь это поможет.

EDIT Исходя из запросов пользователей

Попробуйте сохранить результаты в переменной и вернуть эту переменную в конце обоих циклов, но я не уверен, чего вы пытаетесь достичь здесь, попробуйте запустить следующий код:

//HERE I RETRIVE ALL THE DATA FROM THE DATABASE.
        $query = $dbh->query(" SELECT *
        FROM table
        WHERE ID= '{$ID}'
        ");

//THIS CODE SHOWS THE NUMBER OF ROWS WITH THE CURRENT ID 
        $sql = "SELECT COUNT( * ) FROM table WHERE ID= '{$ID}'";
        $result = $dbh->prepare($sql);
        $result->execute();
        $number_of_rows = $result->fetchColumn();

//THIS IS THE FOREACH IN WHICH I CALL ALL THE ROWS BY THEIR VALUE
        $return = "";
        foreach ($query as $key => $value) {
            $value['wFname'][$key] = !empty($value['wFname'][$key]) ? $value['wFname'][$key] : '';
            $numRow = $number_of_rows - 2; // THE ITEM BEFORE THE LAST ONE IN THE ARRAY
            $lastItem = $number_of_rows - 1; //LAST INDEX IN THE ARRAY
            for ($counter = 0; $counter <= $numRow; $counter++) {
                $return .= $value['wLname'][$counter] . ', ' . $value['wFname'][$counter];
            }
            $return .= "&" . $value['wLname'][$lastItem] . ', ' . $value['wFname'][$lastItem];
            $return .= ' ';
        }
        return $return;
  • 0
    TNX, не злюсь, я не понимаю, почему я не вижу последний результат
  • 0
    Это потому, что в вашем операторе return вместо возврата в цикле for вы должны присвоить значение переменной и затем показать его, когда циклы заканчиваются после фигурных скобок.
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню