while循环后的PHP echo数组值

时间:2012-02-03 08:53:57

标签: php mysql arrays while-loop echo

如何在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 />";

6 个答案:

答案 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']

希望这会有所帮助。