php foreach循环内的for循环,不确定如何执行 [英] php for loop inside a foreach loop, not sure how to do it

查看:151
本文介绍了php foreach循环内的for循环,不确定如何执行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在foreach循环中进行一个for循环.

I'm trying to do a for loop inside a foreach loop.

我的数据库中有一个表,如下所示:

I have a table in my database as follows:

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

我从数据库中调用数据(并且可以在phpmyadmin上进行测试),我希望数据以ID值为例在页面上显示:

i call the data from the database (and it works, tested on phpmyadmin), I want the data to be shown on the page by the ID value for exemple:

巴特·辛普森(Bart Simpson),米老鼠(Mickey Mouse)和彼得·格里芬

Bart Simpson, Mickey Mouse & Peter Griffin

Clark Kenet&戴维·约翰逊(David Johnson)

Clark Kenet & David Johnson

如您在&"中看到的在任何行的姓氏之前,但这不是我的问题.

as you see there in an "&" before the last name at any row but that isnt my problem.

这是我写的代码:

//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的第一对名称. 任何帮助都会很棒.

with this code i get only the first pair of names with each id. any help would be great.

推荐答案

尝试更改:

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

收件人:

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

您正在检查$ counter是否等于$ numRow,并且应该检查它是否等于和小于...

You are checking if $counter equals $numRow, and you should check if it equals and is less than...

希望这会有所帮助.

尝试将结果存储在一个变量中,并在两个循环结束时返回该变量,但是不确定是否要在此实现,请尝试运行以下代码:

Try storing the results in a variable and return that variable at the end of both loops, but im not sure what you are trying to achieve here, try running the following code:

//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;

这篇关于php foreach循环内的for循环,不确定如何执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆