配列からデータを取得しています。何らかの理由で、配列にキー値が[3.3]あり、データの取得に問題があります。
私はこの配列を持ってい[3.3] => First Name [3.6] => Last Name[2] => email@example.comます。
電話をかけようとすると$array[3.3]nullが返されますが、電話をかける$array[2]とメールが届きます。何か案は?
キー値を参照するときは一重引用符を使用します(基本的には文字列のように扱います。これはおそらくPHPが行っていることです)
echo $array['3.3'];
PHPマニュアルから:
キーのフロートは整数に切り捨てられます。
つまり、存在しない$ array [3]を取得しようとしているので、Nullを取得します。
キーは整数または文字列のいずれかです。キーが整数の標準表現である場合、そのように解釈されます(つまり、「8」は8として解釈され、「08」は「08」として解釈されます)。キーのフロートは整数に切り捨てられます。インデックス付き配列タイプと連想配列タイプはPHPの同じタイプであり、整数インデックスと文字列インデックスの両方を含めることができます。
floatは常に整数として切り捨てられるため(たとえば、3.3は常に配列によって3として解釈されます)、配列はfloatではなくStringを期待しているのではないかと思います。$array[3.3]の代わりに$array["3.3"]を試しましたか?
PHPの自動キャスト3.3=>floatと関係があると思います
$array['3.3']を試してください
キーの浮動小数点数と数値文字列は整数に切り捨てられます。
したがって、次のコードを出力します。
$array = [1 => "a", "1" => "b", 1.5 => "c", true => "d"];
print_r($array);
だろう:
Array
(
[1] => d
)
floatキーを使用して配列に要素を追加するときに同様の問題が発生しました-PHPは既存の値を上書きしていました(キー1.2は1.5などで上書きされました)。
このSOスレッドに基づいて、文字列にキャストキーを追加します。
$options[(string)$value] = new TpValueModelOption($value, $label);