0

変数を 1 つずつ取得したいのですが、何が間違っているのでしょうか。すべての配列をエコーアウトできないのはなぜですか?

<?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];
?>
4

2 に答える 2

0

2 番目のコードを次のように変更することから始めることができます。

<?php
$det=new get_all;

$a=$det->get_detais();
echo $a[1];
?>

...しかし、(1)get_details()文字列を返す可能性があり、(2) 配列であっても、含まれる要素が 2 つ未満になる可能性があるため、すべての場合に機能するとは限りません。そう:

<?php
$det=new get_all;

$a=$det->get_detais();
if(is_array($a)&& count($a)>1)
  echo $a[1];
?>

補足として、あなたのget_details()メソッドでは、ing によって関数を終了して破棄さreturn $var=...れるため、 a を実行しても意味がありません。return$var

編集: @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;
于 2013-10-08T22:37:00.763 に答える