while循环后的PHP echo数组值


PHP echo array value after while loop

如何在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']

希望这能有所帮助。