12

配列からデータを取得しています。何らかの理由で、配列にキー値が[3.3]あり、データの取得に問題があります。

私はこの配列を持ってい[3.3] => First Name [3.6] => Last Name[2] => email@example.comます。

電話をかけようとすると$array[3.3]nullが返されますが、電話をかける$array[2]とメールが届きます。何か案は?

4

6 に答える 6

30

キー値を参照するときは一重引用符を使用します(基本的には文字列のように扱います。これはおそらくPHPが行っていることです)

echo $array['3.3'];
于 2010-12-27T22:23:43.900 に答える
18

PHPマニュアルから:

キーのフロートは整数に切り捨てられます。

つまり、存在しない$ array [3]を取得しようとしているので、Nullを取得します。

于 2010-12-27T22:26:50.073 に答える
8

キーは整数または文字列のいずれかです。キーが整数の標準表現である場合、そのように解釈されます(つまり、「8」は8として解釈され、「08」は「08」として解釈されます)。キーのフロートは整数に切り捨てられます。インデックス付き配列タイプと連想配列タイプはPHPの同じタイプであり、整数インデックスと文字列インデックスの両方を含めることができます。

floatは常に整数として切り捨てられるため(たとえば、3.3は常に配列によって3として解釈されます)、配列はfloatではなくStringを期待しているのではないかと思います。$array[3.3]の代わりに$array["3.3"]を試しましたか?

于 2010-12-27T22:26:54.717 に答える
2

PHPの自動キャスト3.3=>floatと関係があると思います

$array['3.3']を試してください

于 2010-12-27T22:24:53.017 に答える
2

キーの浮動小数点数と数値文字列は整数に切り捨てられます。

したがって、次のコードを出力します。

$array = [1 => "a", "1" => "b", 1.5 => "c", true => "d"];
print_r($array);

だろう:

Array
(
    [1] => d
)
于 2017-08-24T08:40:59.077 に答える
0

floatキーを使用して配列に要素を追加するときに同様の問題が発生しました-PHPは既存の値を上書きしていました(キー1.2は1.5などで上書きされました)。

このSOスレッドに基づいて、文字列にキャストキーを追加します。

$options[(string)$value] = new TpValueModelOption($value, $label);
于 2020-12-11T06:37:14.693 に答える