誰かが私が00332という文字列をキャストすると、なぜ私は332だけ戻ってくるのか教えていただけますか?先行ゼロを削除し、データを同じ形式で保存します。キャスティングで先行ゼロが削除される
おかげ
this->_gate = (string) $this->_linkID->QuoteSmart($gate);
誰かが私が00332という文字列をキャストすると、なぜ私は332だけ戻ってくるのか教えていただけますか?先行ゼロを削除し、データを同じ形式で保存します。キャスティングで先行ゼロが削除される
おかげ
this->_gate = (string) $this->_linkID->QuoteSmart($gate);
整数にキャストしたときに先行ゼロが重要でないため、私は言っています。
は、あなたがそれらの先行ゼロが必要な場合は、たぶん、あなたはそれを文字列として残すべきであり、唯一の(あなたがあまりにも文字列を使用することができますが、PHPはそれを把握します)
実行するために必要なすべての数学上の(int)
をキャスト編集
例を見た後、あなたは文字列にキャストする前に、私は値をエコーしたいと思います(私は怪しい何かを確認することができますがあなたとQuoteSmartメソッド(または値あなたがPARAMとして送ることが起こっていません、$ gate)
ヘイアレックス。先日あなたは私を助けてくれてありがとう!私はサンプルの上に投稿しました。 –
私が送るのは00432で、そのキャストの後、私はデータベースに432が保存されているだけです。 :/キャストする前に、私は00432をエコーすることができ、その後は432だけを取得します。私はquotesmart関数を削除し、それが修正されるかどうかを見てみましょう。 brb –
また、ジム、DBのフィールドにはどのようなタイプがありますか?これはDBに保存されているものにも影響する可能性があります。 – alex
あなたは何をしにキャストするのか。コードを見てみましょう。 integerにキャストした場合、整数は先行ゼロがないので消えます。驚きはありません。
上記をご覧ください。ヘルプありがとう –
文字列を文字列に変換しないでください。またはそのタイプの同じタイプの任意のタイプです。型キャスティングはあるタイプから別のタイプへの変更です。
@ジム、それは本当に依存しています。ユーザー入力を受け入れる場合は、数値(例:$ _GET ['id'])でなければなりません。 $ _GET ['id']。どのような有益な数字にも到達できない場合、それは0になるでしょう。 – alex
しかし、コンテキストに応じて他の予防措置を取る必要があります...例えば、ページに印刷される変数はhtmlspecialcharsでなければなりません()とデータベースのクエリのvarsはmysql_real_escape_stringまたはDBの同等のものでなければなりません。実際には、パラメータ化されたクエリを使用してください。 www.php.net/pdoを参照してください。 – alex
それは意味があります。私はアレックスが出力を変更するquotesmart関数についてのポイントを持つかもしれないと思います。私はそれを取り除き、私が得たものを見るつもりです。 –
$ php -r 'var_dump((string)"00123");'
string(5) "00123"
キャストはあなたの問題ではないようです。
ありがとうございます。それは私が他のところで問題を探していたものです。 :) –
OK、先行ゼロを削除した理由はここにあります。それは鋳造でもなく、addslashesでもありませんでした。私がしたことは変数を引用することでした(quotesmartは何とかしなければならないが何らかの理由でしなかった)。私が変数を引用すると、正しく保存された値が得られます。 Imを間違えないと、quotesmartはintではなく文字列でしか動かないでしょう。
文字列を文字列にキャストしていますか?文字列へのint?詳しく教えてください。 –
はい、文字列を文字列に変換します。私はタイプキャストに新しいです... –
あなたの権利!変わったのは、変数以外のすべてを取り除いても、先行ゼロが削除されているということです。何が得られますか? –