我想逐个获取变量我做错了什么,以及为什么我不能让所有数组回显出来?
<?php
class get_all{
public $id;
public $product_name;
public $price;
public $date_added;
public $det;
function get_detais(){
$sql = mysql_query("SELECT * FROM products ORDER BY id DESC ");
$productCount = mysql_num_rows($sql); // count the output amount
$det=array();
if ($productCount > 0) {
while($row = mysql_fetch_array($sql)){
$id = $row["id"];
$product_name = $row["product_name"];
$price = $row["price"];
$date_added = strftime("%b %d, %Y", strtotime($row["date_added"]));
}return $det=array($id,$product_name,$price,$date_added);
} else {
return $det= "We have no products listed in our store yet";
}
}
}
?>
在这里我将函数称为数组元素:
<?php
$det=new get_all;
$det->get_detais();
echo $det[1];
?>
答案 0 :(得分:0)
您可以将第二段代码更改为:
<?php
$det=new get_all;
$a=$det->get_detais();
echo $a[1];
?>
...但是这并不适用于所有情况,因为(1)get_details()
可能会返回一个字符串,(2)即使它是一个数组,它也可能包含少于两个元素。所以:
<?php
$det=new get_all;
$a=$det->get_detais();
if(is_array($a)&& count($a)>1)
echo $a[1];
?>
作为旁注,在您的get_details()
方法中,执行return $var=...
将毫无意义,因为return
退出该函数并且$var
被销毁。< / p>
编辑:正如@asafreedman指出的那样,你的方法不会像你期望的那样工作。您的while
应该是这样的:
while($row = mysql_fetch_array($sql)){
$id = $row["id"];
$product_name = $row["product_name"];
$price = $row["price"];
$date_added = strftime("%b %d, %Y", strtotime($row["date_added"]));
$det[]=array($id,$product_name,$price,$date_added);
}return $det;
答案 1 :(得分:0)
基本PHP。您正在运行while循环并不断覆盖您获取的所有数据:
while($row = mysql_fetch_array($sql)) {
$var = $row[...];
}
每次获取新的数据行时,您上次保存的$var
都会被新值破坏。
您需要构建一个数据数组,例如更像是
$data = array();
while($row = mysql_fetch_array($sql)) {
$data[] = $row;
}
return $data;