php settype()intは常に1を返します

私は $ _GET ['category'] から変数を取得しています。これは常に整数であると考えられています。だから私が使用する変数を設定すると:

$category=settype($_GET['category'], "int");
// Also tried
$category=settype($_GET['category'], "integer");

ただし、これは常に1を返します。これらはクエリ文字列の数値です(例:

http://domain.com/example.php?category=57

私が echo $ category を実行すると、常に1が返されます。?category =

どんな助けもありがとう!ありがとうございました!

1

4 答え

settype modifies the type of the variable. You're using it as if it would return a new variable.

ただし、 settype は型の変更が成功した場合はtrueを返し、そうでない場合はfalseを返します。結果は 1 という結果が表示されます。これはtrueの文字列表現です。

キャスティングを使用するか、 intval

$category = (int) $_GET['category'];//or ...
$category = intval($_GET['category']);
4
追加された
SOのランダムな答えを時々注文するのは嫌だ:(
追加された 著者 Phil,
ありがとうございました!完璧に動作します!
追加された 著者 tvirelli,

settype は、成功した場合はTRUE、失敗した場合はFALSEを返します。

値を返さず、型の設定が成功したかどうかを返します。あなたの $ _GET ['category'] 変数は int になりました。値を返すキャストを行いたいが、変数はそのままにしておくと、構文は次のようになります。

$category = (int)$_GET['category'];
1
追加された

settype() のドキュメントをお読みください。 FYIの戻り値は bool です。

代わりに、鋳造してみてください。

$category = (int) $_GET['category'];
0
追加された

ドキュメントを正しく読んでください。

最初の引数は、参照渡しです。したがって、別の変数に戻り値を設定する必要はありません。

あなたはちょうど好きです、

$category = $_GET['category'];
settype($category, "integer");

ありがとう。

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com