PHP: 0 olmadığını kontrol edin?

4 Cevap php

Bana belirli bir satır değerini ve bir Excel hesap hücre döndürür bir sınıf kullanıyorum. Ben satırları sayma ve daha sonra for() döngü ile bu sayıyı döngü ve ardından $array[] = $value ayarlamak için artan dizi nesnenin değerini kullanıyorum bir sütun bir dizi oluşturmak için.

Bu, hücre içerisinde hiçbirinin değeri ise büyük işler 0. Sınıf bana bir numara 0 döndürür böylece sınıfı ile ilgisi yok ben grafikler oluşturma çünkü, ben ... Ben 0 değeri ile taşımak istediğiniz satır döngü ve ardından diziye atanarak am yol olduğunu düşünüyorum veri ile daha sonra, burada ben kodudur.

// Get Rainfall
$rainfall = array();
for($i=1;$i<=$count;$i++)
{
    if($data->val($i,2) != 'Rainfall') // Check if not the column title
    {
        $rainfall[] = $data->val($i,2);
    }
}

Lütfen bilgi için $data excel elektronik tablo nesne ve yöntem $data->val(row,col) Bana değerini döndürür budur. Bu durumda ben sütundan veri alıyorum 2.

Screenshot of spreadsheet

4 Cevap

Eğer) (bir array_push denedin mi?

array_push($rainfall, $data->val($i,2));

Ben operatörü eşit değil kullanmak yerine burada not identical operatörü ile sıkı bir karşılaştırma kullanmak:

if($data->val($i,2) !== 'Rainfall')

$data->val($i,2) bir sayıdır ve siz kullanırsanız == iki taraf size sıfır dışında beklediğiniz gibi tüm tamsayılar çalışmak olacağını sonucu verecek tamsayılar atılacaktır. İşte == ve === sıfır dizesini "Yağmur" karşılaştırırken arasındaki fark bir özeti:

0 == "RainFall" : true
0 != "RainFall" : false
0 === "RainFall" : false
0 !== "RainFall" : true

Ben dizi bu diziye gitmiyveya açıklayabilir ki, yanlış gibi 0 tedavi olduğunu düşünüyveyaum. Bu iş böyle bir şey (tamsayılar kullanıyveyasanız) misin?

(int)($data->val($i,2));

veya

(float)($data->val($i,2);)

Sorun ise ifadesinde yatmaktadır. Sen PHP belgelerine göre tamsayılar hem typecasting edecek bir tamsayı, bir dize karşılaştırmak için çalışıyoruz.

Bir dize ya da karşılaştırma sayısal dizeleri içeren bir dizi karşılaştırmak, sonra her dize bir sayıya dönüştürülür ve karşılaştırma sayısal gerçekleştirilir. Bu kurallar aynı zamanda switch deyimi için geçerlidir. Türü dönüştürme karşılaştırma olduğunda === gerçekleşecek ya da yok! == Bu tür yanı sıra değerini karşılaştırarak karıştırmak gibi.

Daha fazla burada okuyun http://php.net/manual/en/language.operators.comparison.php. Olabilir

Güncelleme: (int)"Rainfall" tarafından olacak PHP ile 0 içine typecasted çünkü deyim deyim {olmasını neden 0 durumunda çalışmaz ise [(3 )]}.

$i satır sayısını temsil ediyorsa, neden 2 yerine 1 başlamıyoruz?