質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • PHP

    21410questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

URLに値(float)を入れ、その値を取得すると少数点以下が表示されない

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 411

Sky_Hat

score 5

URLの最後のパラメータにfloat(少数)を入れ、その値を取得すると小数点以下が表示されません。
値の使用目的は、バージョンの値をもらって表示切替の判断基準として使う予定です。

1.1->Aページ
1.2->Bページ
といったことをやろうとしております。

--やりたい事--
・小数点以下も表示されるようにしたいです。
└URLの最後に「/」を入れた場合、小数点以下も表示されることは知っておりますが、他の方法も無いかを知りたいです。
・値がstringで返ってくるので、floatで返すようにしたいです。

これらは、phpの仕様なのでしょうか?

開発環境
・Windows10
・PHP
・FuelPHP

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+2

明確な答えになっていないかもしれませんが・・・
getで値を送るとき、一つ一つパラメーターにして書き連ねるよりも、
serializeで配列を文字列に固めてしまうと楽です。
暗号化したい場合も楽になるので、お勧めです。

<?php
$array_test = array(
    'boolean_type' => true,
    'int_type' => 123456,
    'float_type' => 1.234,
    'date_type' => date("Y/m/d", strtotime("2017/1/1")),
    'string_type' => 'abcd',
    'array_type' => array(
                    'aa' => 1,
                    'bb' => 2,
                    'cc' => 3,
                    'dd' => 4),
); 

var_dump($array_test);

$seri = serialize($array_test); 

print_r($seri);

$reseri = unserialize($seri);

var_dump($reseri);

結果

array(6) {
  ["boolean_type"]=>
  bool(true)
  ["int_type"]=>
  int(123456)
  ["float_type"]=>
  float(1.234)
  ["date_type"]=>
  string(10) "2017/01/01"
  ["string_type"]=>
  string(4) "abcd"
  ["array_type"]=>
  array(4) {
    ["aa"]=>
    int(1)
    ["bb"]=>
    int(2)
    ["cc"]=>
    int(3)
    ["dd"]=>
    int(4)
  }
}

a:6:{s:12:"boolean_type";b:1;s:8:"int_type";i:123456;s:9:"float_type";d:1.234;s:9:"date_type";s:10:"2017/01/01";s:11:"string_type";s:4:"abcd";s:10:"array_type";a:4:{s:2:"aa";i:1;s:2:"bb";i:2;s:2:"cc";i:3;s:2:"dd";i:4;}}

array(6) {
  ["boolean_type"]=>
  bool(true)
  ["int_type"]=>
  int(123456)
  ["float_type"]=>
  float(1.234)
  ["date_type"]=>
  string(10) "2017/01/01"
  ["string_type"]=>
  string(4) "abcd"
  ["array_type"]=>
  array(4) {
    ["aa"]=>
    int(1)
    ["bb"]=>
    int(2)
    ["cc"]=>
    int(3)
    ["dd"]=>
    int(4)
  }
}

日付が文字列なのはお約束です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/05 14:33 編集

    ご回答、ありがとうございます。

    大変、申し訳ありません。
    自分の説明が不足しておりました。
    値は、アプリ側から送られてきます。
    ですので、PHP→PHPへの値の受け渡しは考えておりませんでした。
    これを使用することを考えますと、少し時間が掛かってしまいます...

    ただ、大変参考になります!
    serializeで固めてしまえば、扱いは楽になりそうですね。

    キャンセル

checkベストアンサー

+1

FuelPHPは触ったことがないため、Fuel独自の仕様なのかもしれませんが。
手元のPHP7環境で試してみたところ、問題なく取得できました。

<?php
$float = $_GET['float'];
var_dump($float);
$float2 = (float)$float;
var_dump($float2);
$float3 = 1*$float;
var_dump($float3);
?>


上記のようなコードを作成し、http://example.com/?float=3.141592 にアクセスした結果

string(8) "3.141592"
float(3.141592)
float(3.141592)


となりました。
型キャストでも暗黙的キャストでもどちらも機能しているようです

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/05 13:51 編集

    ご回答、ありがとうございます。

    FuelPHPのGET(Input::get)を使用しております。

    例 URL)
    http://test/~/~/1.0
    何も対応をしない状態で取得しますと、
    string(1)"1"
    上記の形になります。

    例 URL)
    http://test/~/~/1.0/
    最後に「/」を付けますと、
    string(3)"1.0"
    上記の形になります。

    後ろに「/」を入れる必要があるのは、FuelPHP独自のものなのかもしれませんね。
    ただ、URL自体が文字列なので値を取ってきたら、
    数字もstringになるのは仕方ないことのようですね。

    floatが欲しいのなら、型キャストするしか方法はないようですね。

    キャンセル

  • 2017/04/05 17:28

    最後にスラッシュを付けるつけないで挙動が変わる話は、
    Router::get()の実装に関係するのかなぁと察します。
    (嘘だったらごめんなさい、自信ないので)
    正規表現で区切ってしまう際に、まずはスラッシュで区切っているのを抽出した後、
    末尾は単語で切り出す(\w+って正規表現)でピリオド以降を捨てているんじゃないかと。

    キャンセル

同じタグがついた質問を見る

  • PHP

    21410questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。