0

私はこのコードを持っています:

  $val = (float) $desc;
  if (!isset($runepage['statistics'][$key])) {
        $runepage['statistics'][$key] = (float) 0.0;
  }
  $runepage['statistics'][$key] += $val;

$valフロートはどこにありますか。

しかし、最後に配列を出力すると、すべての値が整数になります。たとえば、同じ$keyに 1.5、1.5、1.5 がある場合、4.5 ではなく 3 が出力されます。

なぜこれを行っているのかわかりません。

編集:配列の出力は次のとおりです

[statistics] => Array
    (
        [magic penetration] => 9
        [ability power per level] => 9
        [movement speed] => 3
        [magic resist] => 9
    )
4

1 に答える 1

5

申し訳ありません$keyが、フロートであると仮定してあなたの質問を読み違えました。

の場合$val— わかりません。値に対しては正常に機能するはずなので、問題の原因は別の場所にある可能性があります。PHP では、integer と float を一緒に追加しても安全であり、結果は float になります。


$keyが floatの場合:

これは、文書化された正常な動作です。配列は float によってインデックス付けされるべきではありません。

また、数値に見える文字列も整数にキャストされます。$a[5] === $a['5'].

残念ながら、PHP 配列は一般的なキーと値のストアではありません。あなたの最善の策は、数字で始まらない文字列にキーをシリアル化することです。

于 2013-03-20T23:32:21.647 に答える