如何在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 />";
答案 0 :(得分:2)
在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'];
}
答案 1 :(得分:0)
也许你应该这样做:
$cast = array('id' => $id, 'name' => $name, 'img' => $poster);
//$cast[] = $row;
}
//var_dump($cast);
echo $cast['id'] . " " . $cast['name'] . " " . $cast['poster']."<br />";
因为如果您使用 $ cast [] ,它会将新数组附加到您的数组中。
答案 2 :(得分:0)
那是因为你在每个索引的$ 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++;
}
答案 3 :(得分:0)
print_r($cast[0]); or you can use $cast[0]['id'] ;
答案 4 :(得分:0)
试试这个:
<?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 />";
}
?>
答案 5 :(得分:0)
你的代码有两个问题,首先是$ cast []是一个二维数组,因此它的每个索引都包含数组,所以你必须使用
$cast[$i]['id']
我将成为将遍历所有索引的计数器变量。其次改变
$cast['poster']
到
$cast['img']
希望这会有所帮助。