Nasıl bir dizinin tüm değerler PHP yüzer dönüştürebilirsiniz?

4 Cevap php

Benim veritabanından yüzen bir dizi getiriliyor ama ben almak dizi değerleri dizelere dönüştürdü.

How can I convert them into floats again without looping through the array?
Alternatively, how can I fetch the values from the database without converting them to strings?


EDIT:

  • Ben Zend Framework kullanıyorum ve ben PDO_MYSQL kullanıyorum. Değerler kolon başına birini saklanır ve onları getirilemez böylece bir gerekliliktir.

  • array_map('floatval', $array), sadece tek boyutlu diziler çalışır.

  • I floatval Tek elemanlar benim flash grafik bir dizi geçmek zorunda çünkü ben bunları kullanmak yapamam.

  • Anlık, genel olmayan çözüm satırları ayıklamak ve array_map('floatval',$array) her satır ile yapmaktır.

4 Cevap

Sen kullanabilirsiniz

$floats = array_map('floatval', $nonFloats);

Orada PDO::ATTR_STRINGIFY_FETCHES seçenek ama ben ne hatırlıyorum, MySQL zaman true olarak bulunur

Düzenleme: MySQL stringify kapatma desteklemiyor Bug 44341 hangi onaylar bkz.

Edit: Ayrıca bu gibi özel bir işlev eşleyebilirler:

function toFloats($array)
{
    return array_map('floatval', $array);
}

$data = array_map('toFloats', $my2DArray);

Verilerinizi nasıl alıyorsanız? mysql, mysqli veya PDO, başka bir yolu ya da diğer bazı veritabanı?

you could use array_map with floatval like so: $data = array_map('floatval', $data); but that still executes a loop and i think it assumes you only have one column in your data.

muhtemelen varsa, size değer kullandığınızda float döküm en iyi konum. php sağ zaten onu yorumlamanın iyi bir iş yapmak olasıdır.

LOL ... Eğer ben Tharkun duyuyorum aynı proje üzerinde çalışıyoruz?

I just finished (last night) creating something, in a ZF based project, that uses pdo_mysql to retrieve and format data and then output it as xml for use in a flash piece. The values were going in as strings but needed to be floats. Since I'm also the one who wrote the part that gets the data and the one who created the database I just made sure the data was converted to float before it went into the database.

Ben sadece buna değer ne için, diğer bazı biçimlendirme parçası olarak float değerleri döküm.

protected function _c2f($input)
    {
        $input = (float)$input;
        $output = round(($input * 1.8) + 32, 2);

        return $output;
    }

Değil burada soruyorsun emin ne? Sen (float) $string kullanarak, bir şamandıraya bir dize çevirebilirsiniz, ancak PHP dinamik yazdığınız bu yana gerektiğinde, o, yine olur. Açık bir döküm yapmak için hiçbir neden yoktur.

Eğer kayan nokta değerleri ne için kullanıyorsunuz?