如何在while循环后回显值。如果我在下面的代码中做回显,它会显示未定义的索引。
$sql_cast = "SELECT *
FROM
title_cast
INNER JOIN title ON (title_cast.id_title = title.id)
INNER JOIN `cast` ON (title_cast.id_cast = `cast`.id)
WHERE
title_cast.id_title = '1'";
$result_cast = mysql_query($sql_cast) or die('log error with' .mysql_error());
$cast = array();
while ($row = mysql_fetch_assoc($result_cast)) {
$id = $row['id'];
$name = $row['name'];
$img = $row['photo_localurl'];
$poster = str_replace("./", "lib/", $img);
$cast[] = array('id' => $id, 'name' => $name, 'img' => $poster);
//$cast[] = $row;
}
//var_dump($cast);
echo $cast['id'] . " " . $cast['name'] . " " . $cast['poster']."<br />";
在while循环中,使用$cast[]
语法设置强制转换数组内容。这将创建一个数字索引,从0开始,然后是1,依此类推,所以您创建的数组如下所示:
$cast = array(
0 => array('id' => $id, 'name' => $name, 'img' => $poster),
1 => array('id' => $id, 'name' => $name, 'img' => $poster)
);
您需要包含要回显的数组的数字键。例如,如果您想回显第一行:
echo $cast[0]['id']; // Echo the id of the first result
如果要回显所有行,请使用foreach
:
foreach($cast as $row) {
echo $row['id'];
}
也许你应该这样做:
$cast = array('id' => $id, 'name' => $name, 'img' => $poster);
//$cast[] = $row;
}
//var_dump($cast);
echo $cast['id'] . " " . $cast['name'] . " " . $cast['poster']."<br />";
因为如果您使用$cast[],它会将新数组附加到您的数组中。。
这是因为您在每个索引处推送$cast中的一个新数组。。
所以你应该这样回应。。
$i = 0;
while ($row = mysql_fetch_assoc($result_cast)) {
$id = $row['id'];
$name = $row['name'];
$img = $row['photo_localurl'];
$poster = str_replace("./", "lib/", $img);
$cast[] = array('id' => $id, 'name' => $name, 'img' => $poster);
//$cast[] = $row;
//var_dump($cast);
echo $cast[$i]['id'] . " " . $cast[$i]['name'] . " " . $cast[$i]['poster']."<br />";
$i++;
}
试试这个:
<?php
while ($row = mysql_fetch_assoc($result_cast)) {
$id = $row['id'];
$name = $row['name'];
$img = $row['photo_localurl'];
$poster = str_replace("./", "lib/", $img);
$cast[] = array('id' => $id, 'name' => $name, 'img' => $poster);
}
foreach($cast as $rows) {
echo $rows['id']." ".$rows['name']." ".$rows['img']."<br />";
}
?>
print_r($cast[0]); or you can use $cast[0]['id'] ;
您的代码有两个问题,首先是$cast[]是一个二维数组,因此它在每个索引处都包含数组,因此您必须使用
$cast[$i]['id']
其中,i将是将遍历所有索引的计数器变量。第二次更改
$cast['poster']
至
$cast['img']
希望这能有所帮助。