php for loop in a foreach loop, 不知道该怎么做
php for loop inside a foreach loop, not sure how to do it
我正在尝试在 foreach 循环中执行 for 循环。
我的数据库中有一个 table 如下:
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($counter = 0; $counter = $numRow; $counter++){
至:
for($counter = 0; $counter =< $numRow; $counter++){
您正在检查 $counter 是否等于 $numRow,您应该检查它是否等于且小于...
希望对您有所帮助。
根据用户请求编辑
尝试将结果存储在一个变量中,并在两个循环结束时 return 该变量,但我不确定您要在这里实现什么,请尝试 运行 以下代码:
//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;
我正在尝试在 foreach 循环中执行 for 循环。
我的数据库中有一个 table 如下:
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($counter = 0; $counter = $numRow; $counter++){
至:
for($counter = 0; $counter =< $numRow; $counter++){
您正在检查 $counter 是否等于 $numRow,您应该检查它是否等于且小于...
希望对您有所帮助。
根据用户请求编辑
尝试将结果存储在一个变量中,并在两个循环结束时 return 该变量,但我不确定您要在这里实现什么,请尝试 运行 以下代码:
//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;