2016-04-24 11 views
1

MySQLテーブルからjson配列に数値の列を問い合わせて返します。しかし、配列の最後の要素にアクセスしようとすると、それが文字列として返されます。私はint型でそれをキャストしようとしたが、それはここでは0を返します。私のコードです:json配列の値を整数に変換する

public function get_latest_subcategory_id() { 

    $ids = $this->query("SELECT SubCategory_ID FROM SubCategory"); 
    if ($ids->num_rows > 0) { 

     $arr_json = array(); 
     while ($row = $ids->fetch_row()) { 
      $json = json_encode($row); 
      $arr_json[] = $json; 
     } 
     echo $arr_json[$ids->num_rows-1]; 
    } else 
     return null; 
} 

は、私は整数としてそれを取得することができます方法はありますか?

+0

echo intval($ array_json [$ ids-> num_rows-1]、10)? – hounded

+0

まだ0を返します... – DeeTee

+0

最終目標は何ですか?配列に追加する前に、各クエリ行をエンコードしています。代わりに、標準配列を作成し、最後にそれをエンコードする必要があると思います。 – fusion3k

答えて

2

JSONは実際には何もしません。最後の行を取得するだけでは、データベース全体を調べることも実際には効率的ではありません。なぜこのようなことをしないのですか?

public function get_latest_subcategory_id() { 
    $ids = $this->query("SELECT SubCategory_ID FROM SubCategory ORDER BY SubCategory_ID DESC LIMIT 1"); 
    if ($ids->num_rows > 0) { 
     $row = $ids->fetch_row(); 
     return intval($row[0]); 
    } else 
     return null; 
} 
+0

この方法はデータベース全体を経由しないのですか? – DeeTee

+0

@DeeTeeいいえ、 'ORDER BY SubCategory_ID DESC'はMySQLに最初に最も高いSubCategory_IDを返すように指示し、' LIMIT 1'はMySQLに最初の結果だけを返すように指示します。 – Chris

関連する問題