php foreach echo 打印“数组”作为值
php foreach echo prints “Array” as value
php foreach echo prints "Array" as value
问这个问题,但这里不是这种情况
try {require_once'libs/config.php';
$con = new PDO($dsn, $user, $pass, $opt);
$query = "SELECT * FROM table ";
//first pass just gets the column names
print "<table> \n";
$result = $con->query($query);
//return only the first row (we only need field names)
$row = $result->fetch(PDO::FETCH_ASSOC);
print "<thead> <tr> \n";
foreach ($row as $field => $value){
print " <th>$field</th> \n";
} // end foreach
print " </tr> </thead> <tbobdy> \n";
//second query gets the data
$data = $con->query($query);
$data->setFetchMode(PDO::FETCH_ASSOC);
foreach($data as $row){
echo $row; // prints Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array
print " <tr> \n";
foreach ($row as $name=>$value){
print "<td>$value</td>\n"; }
} // end field loop
print " </tr> \n";
} // end record loop
// print "</tbody> </table> \n";
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
} // end try
$con = null;
?>
您需要在 foreach
循环中打印 $value
,因为它包含数组元素的值。
你的最终输出将是这样的:
<?php
try {
require_once 'libs/config.php';
$con = new PDO($dsn, $user, $pass, $opt);
$query = "SELECT * FROM table ";
//first pass just gets the column names
print "<table> \n";
$result = $con->query($query);
//return only the first row (we only need field names)
$row = $result->fetch(PDO::FETCH_ASSOC);
print "<thead> <tr> \n";
foreach ($row as $field => $value) {
print " <th>$value</th> \n";
} // end foreach
print " </tr> </thead> <tbobdy> \n";
//second query gets the data
$data = $con->query($query);
$data->setFetchMode(PDO::FETCH_ASSOC);
foreach ($data as $Somefield => $SomeValue) {
echo $SomeValue; // prints your disered output
print " <tr> \n";
foreach ($row as $name => $value) {
print "<td>$value</td>\n";
}
} // end field loop
print " </tr> \n";
} // end record loop
// print "</tbody> </table> \n";
catch (PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
} // end try
$con = null;
?>
?>
我想我明白了 foreach as ..
无法回显一个完整的数组,它的键或值或两者,如果它是一个数组,它会在此处打印 'array' 因为 $data 包含一个数组整行它只是打印 'array',
每个多维数组都是如此,您可以从 php 文档
中看到以下示例
/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";
foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo "$v2\n";
}
}
数据库的结果是一个多维数组
如此简单,这意味着 $row 是一个数组而不是变量。你需要做 print_r($row);
而不是 echo $row;
php foreach echo prints "Array" as value 问这个问题,但这里不是这种情况
try {require_once'libs/config.php';
$con = new PDO($dsn, $user, $pass, $opt);
$query = "SELECT * FROM table ";
//first pass just gets the column names
print "<table> \n";
$result = $con->query($query);
//return only the first row (we only need field names)
$row = $result->fetch(PDO::FETCH_ASSOC);
print "<thead> <tr> \n";
foreach ($row as $field => $value){
print " <th>$field</th> \n";
} // end foreach
print " </tr> </thead> <tbobdy> \n";
//second query gets the data
$data = $con->query($query);
$data->setFetchMode(PDO::FETCH_ASSOC);
foreach($data as $row){
echo $row; // prints Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array
print " <tr> \n";
foreach ($row as $name=>$value){
print "<td>$value</td>\n"; }
} // end field loop
print " </tr> \n";
} // end record loop
// print "</tbody> </table> \n";
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
} // end try
$con = null;
?>
您需要在 foreach
循环中打印 $value
,因为它包含数组元素的值。
你的最终输出将是这样的:
<?php
try {
require_once 'libs/config.php';
$con = new PDO($dsn, $user, $pass, $opt);
$query = "SELECT * FROM table ";
//first pass just gets the column names
print "<table> \n";
$result = $con->query($query);
//return only the first row (we only need field names)
$row = $result->fetch(PDO::FETCH_ASSOC);
print "<thead> <tr> \n";
foreach ($row as $field => $value) {
print " <th>$value</th> \n";
} // end foreach
print " </tr> </thead> <tbobdy> \n";
//second query gets the data
$data = $con->query($query);
$data->setFetchMode(PDO::FETCH_ASSOC);
foreach ($data as $Somefield => $SomeValue) {
echo $SomeValue; // prints your disered output
print " <tr> \n";
foreach ($row as $name => $value) {
print "<td>$value</td>\n";
}
} // end field loop
print " </tr> \n";
} // end record loop
// print "</tbody> </table> \n";
catch (PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
} // end try
$con = null;
?>
?>
我想我明白了 foreach as ..
无法回显一个完整的数组,它的键或值或两者,如果它是一个数组,它会在此处打印 'array' 因为 $data 包含一个数组整行它只是打印 'array',
每个多维数组都是如此,您可以从 php 文档
/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";
foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo "$v2\n";
}
}
数据库的结果是一个多维数组
如此简单,这意味着 $row 是一个数组而不是变量。你需要做 print_r($row);
而不是 echo $row;