PHP, bir değişken bildirirken açık bir tür bildirimi gerektirmez (ve desteklemez); Bir değişkenin türü, kullanıldığı bağlama göre belirlenir. Yani, $var öğesine bir dize değeri atarsanız, $var bir dize olur. Daha sonra $var'a bir tamsayı değeri atarsanız, bu bir tamsayı olur.
Otomatik tür dönüştürmeye bir örnek, toplama operatörüdür " + ". İşlenenlerden herhangi biri bir kayan noktalı sayı ise, tüm işlenenler kayan noktalı sayılar olarak yorumlanır, sonuç da bir kayan noktalı sayı olacaktır. Aksi takdirde, işlenenler tamsayı olarak yorumlanacak ve sonuç da bir tamsayı olacaktır. Bunun işlenenlerin türlerini DEĞİŞTİRMEYECEĞİNİ, yalnızca nasıl hesaplandıklarını değiştirdiğini unutmayın. Bazı pratik örnekler:
$foo = "0" ; // $foo bir dizgedir (ASCII 48)
$foo += 2 ; // $foo artık bir tam sayıdır (2)
$foo = $foo + 1.3 ; // $foo artık bir kayan nokta (3.3)
$foo = 5 + "10 Küçük Domuzcuk" ; // $foo bir tamsayıdır (15)
$foo = 5 + "10 Küçük Domuz" ; // $foo bir tamsayıdır (15)
?>
Bu bölümdeki örneklerden herhangi birini test etmek isterseniz, işlevi kullanabilirsiniz. var_dump() .
Dikkat: -1 sayar DOĞRU, sıfır olmayan (negatif veya pozitif) herhangi bir sayı gibi!
Dönüşüm örnekleri:
var_dump((bool) "" ); // bool(yanlış)
var_dump((bool) 1 ); // bool(doğru)
var_dump ((bool) - 2 ); // bool(doğru)
var_dump((bool) "foo" ); // bool(doğru)
var_dump((bool) 2.3e5 ); // bool(doğru)
var_dump ((bool) dizi(12)); // bool(doğru)
var_dump((bool)array()); // bool(yanlış)
var_dump((bool) "yanlış"); // bool(doğru)
?>
Boole türünden dönüştürme
YANLIŞ 0'a (sıfır) dönüştürülür ve DOĞRU- 1'de (bir).
Float türünden dönüştürme
Kayan nokta sayısından tam sayıya dönüştürülürken sayı yuvarlanır sıfıra doğru.
Float tamsayının sınırlarını aşarsa (genellikle +/- 2.15e+9 = 2^31), tamsayı doğru sonucu döndürmek için yeterli kesinliğe sahip olmadığından sonuç tanımsız olacaktır. Bu durumda, hiçbir uyarı veya hatta açıklama görüntülenmez.
Dikkat! Bilinmeyen bir kesri asla bir tam sayıya dönüştürmeyin, çünkü bu bazen beklenmedik sonuçlar verebilir, örneğin:
echo (int) ((0.1 + 0.7 ) * 10 ); // 7 çıktısı!
?>
Dize türünden dönüştürme
Diğer türlerden dönüşümler
Diğer türler için tamsayıya dönüştürme davranışı tanımsızdır. Şu anda davranış, değer first . Yine de olumsuzluk haber verilmeksizin değişebileceğinden bu davranışa güvenin.
boole ( boole) anlam DOĞRU"1" dizgisine ve değere dönüştürülür YANLIŞ"" (boş dize) olarak temsil edilir. Bu şekilde, değerleri her iki yönde de - boole türünden dize türüne veya tam tersine dönüştürebilirsiniz.
tamsayı ( tam sayı) veya kayan nokta sayısı ( batmadan yüzmek) basamaklarından oluşan bir sayı ile temsil edilen bir dizgeye dönüştürülür (kayan noktalı sayıların üssü dahil).
Diziler her zaman "Array" dizesine dönüştürülür, bu nedenle bir dizinin içeriğini görüntüleyemezsiniz ( dizi) kullanarak Eko() veya Yazdır() ne içerdiğini görmek için Tek bir öğeyi görüntülemek için echo $arr["foo"] gibi bir şey yapmanız gerekir. Tüm içeriğin nasıl görüntüleneceği/görüntüleneceği ile ilgili ipuçları için aşağıya bakın.
Nesneler her zaman "Object" dizesine dönüştürülür. Bir nesne üye değişkeninin değerini çıktılamak istiyorsanız ( nesne) hata ayıklama amacıyla aşağıdaki paragrafları okuyun. Gerekli nesnenin sınıf adını almak istiyorsanız, şunu kullanın: get_class() .
Kaynaklar her zaman "Kaynak kimliği #1" yapısıyla dizelere dönüştürülür, burada 1 benzersiz bir kaynak numarasıdır ( kaynak) çalışma zamanında PHP tarafından kendisine atanır. Kaynak türünü almak istiyorsanız, .
HÜKÜMSÜZ her zaman boş dizeye dönüştürülür.
Dizilerin, nesnelerin veya kaynakların çıktısı, değerlerin kendileri hakkında size herhangi bir yararlı bilgi sağlamaz. Hata ayıklama için değerlerin çıktısını almanın daha uygun bir yolu, işlevleri kullanmaktır. print_r() ve var_dump() .
Kalıcı depolama için PHP değerlerini dizelere de dönüştürebilirsiniz. Bu yöntem serileştirme olarak adlandırılır ve işlevle yapılabilir. seri hale getir(). Ayrıca PHP kurulumunuz WDDX desteğine sahipse PHP değerlerini XML yapılarına seri hale getirebilirsiniz.
Dizi tipine dönüştür (diziler)
Türlerden herhangi biri için: tam sayı, batmadan yüzmek, sicim, boole ve kaynak, değeri bir diziye dönüştürürseniz, bir eleman (0 dizininde) ile başladığınız skaler değer olan bir diziyle sonuçlanırsınız.
Bir nesneyi diziye dönüştürürseniz ( nesne), bu nesnenin özelliklerini (üye değişkenleri) dizi öğeleri olarak alacaksınız. Anahtarlar, üye değişkenlerin adları olacaktır.
Değeri bir diziye dönüştürürseniz HÜKÜMSÜZ, boş bir dizi alacaksınız.
Object (nesneler) türüne dönüştür
Bir nesne bir nesneye dönüştürülürse değişmez. Başka türden bir değer bir nesneye dönüştürülürse, yerleşik sınıf stdClass'ın yeni bir örneği oluşturulur. Değer boşsa, yeni örnek de boş olacaktır. Başka herhangi bir değer, onu skaler üye değişkeninde içerecektir:
$nesne = (nesne) "ciao";
echo $nesne -> skaler ; // "ciao" çıktısı
?>
Bilgi her zaman sembolik olmuştur. Yalnızca programlama ortaya çıktığında kısmen harflere, sayılara ve işaretlere (resmi anlamda) dönüştü.
Belli bir zamana kadar sözlü konuşma, el yapımı semboller, jestler ve özellikle sanat eserleri en büyük popülariteye sahipti. Küçükten büyüğe bilginin doğal sunumu için tüm bu seçeneklerin her zaman kelimelerle açıklanabilmesi, yani bir anlamda yazılım işlemeye açık olması önemlidir.
Dizeler ve sayılar
Çizgiler, her şeyden önce, çeşitli karakterlerin koleksiyonlarıdır. Farklı programlama araçlarında, kesirli kısım tam sayıdan farklı şekillerde ayrıldı. Bazıları noktayı tercih ederken, diğerleri virgül (PHP'de bir dizeyi sayıya dönüştürmek "." anlamına gelir). Triad'lar tek bir kesme işareti, virgül veya boşluk ile ayrıldı. Gerçek sayılar "E" harfi ile yazılmıştır.
Bütün bunlar formalite. Herhangi bir işlemcinin matematiği ve çalışma prensipleri her zaman sayıları sade olarak kabul etmiştir ve bunlara karşılık gelen ek işlemciler gerçek değerlerle çalışmak üzere geliştirilmiştir.
Ancak somut tür değişkenleri dünyası (erken dönem programları için) ve tüm veri türlerinin modern fikir birliği, PHP'de bir dizeyi sayıya dönüştürmenin hiçbir şey yapmamak gibi olduğu anlamına gelir. En iyi durumda, PHP kaynak dizede en az bir basamak varsa "keser" veya daha doğrusu 0 veya sayı yapar. İlk rakam olmayan karaktere kadar olan tüm rakamlar bu numarayı oluşturacaktır.
Genel dönüştürme kuralı
PHP'de, programcı aksini belirtmedikçe, bir dizgenin bir sayıya dönüştürülmesi, uygulama sırasında otomatik olarak gerçekleşir. Değişken yalnızca rakamlar ve bir nokta içeriyorsa, gerçek bir sayı elde edilebilir. Bir basamak dizisinde virgül varsa, ondan önce gelen her şey doğal olarak bir tam sayı olarak yorumlanacaktır.
Rakam dizisindeki herhangi bir sayısal olmayan karakter işlemi durdurur ve PHP'nin "dizeden sayıya" dönüşümünün sonucu, yalnızca sayısal olmayan ilk karakterden önce oluşturulan değer olacaktır.
Matematik ve sembol işleme
Daha zor olan, birinci veya ikinci, sayfaya sığmayan formüller açısından bile, etkileyici matrisler, grafikler, bazen integrallerin türevlerinin yazarları, n'inci nesildeki integrallerden ve polinomlardan türevler bile çözemezler. , söylemek çok basit: toplum elbette matematiğin ve matematikçilerin erdemlerini onurlandırır, ancak sembol işleme daha önemlidir, daha karmaşıktır ve matematiği bir yorgan gibi kaplar, sayıların büyüsünün ötesine geçemeyen meraklı bir zihin sağlar, yaratıcılık için uygun bir ortam.
Genellikle açık PHP, dizeyi otomatik olarak sayıya dönüştürür, ancak kontrol etmek asla kötü bir fikir değildir. PHP'nin belirli bir değişkenin bir sayı olduğunu doğru bir şekilde anladığından her zaman emin olmak en iyisidir. En ufak bir şüphe bile varsa, değerden önce (int) veya (float) değişkeninin türünü açıkça belirtmeli ve is_integer() veya is_float() işlevleriyle PHP'nin değişkenin türünü nasıl anladığını kontrol etmelisiniz.
Modern Programlama Trendleri
PHP'deki "diziden sayıya" görevinin klasik yorumu, modern programlama fikirlerinin sınırları içindedir. Ters işlem çok daha çeşitli seçeneklere sahiptir. Fonksiyonlar number_format(), printf(), sprintf() sadece tek bir sayı düzeyinde değil, aynı zamanda bir grup sayı düzeyinde de harikalar yaratabilir.
PHP'de Dönüşüm" string to number", bunun yerine bunu yapabileceğimizi belirtir, ancak m atematik ve sayısal hesaplamalar bizim işimiz değil.
PHP'de şu veya bu sayı işlemeyi uygulayan düzgün ve güvenilir işlevsellik yazmak sorun değildir ve sonuç, daha fazla matematik dilinden elde edilen sonuçtan daha kötü olmayacaktır. PHP, her şeyden önce, bir sunucu dili, matematiksel olanlar da dahil olmak üzere bilgi işleme dilidir.
Tam sayıların gerçek sayılara göre önceliği yoktur, ancak büyük ölçüde “dijital olmayan” bir amaç için yönlendirilirler. Belirli sayıda basamaklı ve/veya belirli bir değer aralığındaki kesin bir sayı, CSS kuralları oluşturmak için anlamlıdır, bir dizi anahtarı veya bir veritabanı tablosu satırı için benzersiz bir kayıt kodu olarak kullanılabilir. Tam sayı, veri iletirken benzersiz bir kodun, bir parolanın veya bir sağlama toplamının parçası olabilir. Bir tamsayı matematikten ve sayısal yöntemlerden uzaktır, genellikle verilen veya kodunun bir öğesidir.
intval() fonksiyonunun anlamı
PHP'nin intval() işlevi "değişkeni tamsayıya" dönüştürmek için kullanılır, iki parametresi ve çift anlamı vardır.
İkinci parametre istenen sayı sisteminin temelidir. Ondalık sistem varsayılan olarak kullanılır. İkinci parametreyi belirtmezseniz, "0" karakteriyle başlayan sayı sekizlik ve "0x" - onaltılık karakterleriyle başlayan sayı olarak kabul edilir.
Birinci parametre bir karakter dizisiyse, ikinci parametre önemlidir.
Son iki örnek (çok büyük değerler) sonucun uygun olmadığını göstermektedir. Esasen, makinenin (işletim sistemi) bit derinliği burada önemlidir. Pratikte, bu tür sayıların dönüşümleri pek bir anlam ifade etmez.
PHP'nin intval işlevinin arkasındaki mantık, pratik kullanım için bir dize veya sayıyı bir tam sayıya dönüştürmektir. Örneğin, yalnızca tamsayıları kullanan bir CSS kuralı oluşturun. Yalnızca tamsayı kısmını kaldırarak gerçek bir sayıyı tam sayıya dönüştürün.
intval() işlevini kullanma
PHP'nin intval() işlevi, bir tamsayı elde etme amacına yönelik tek işlev değildir. round(), ceil() ve floor() kullanabilirsiniz. Bu işlevler ortak yuvarlama mantığıyla çalışır.
PHP'nin intval() işlevi herhangi bir mantıktan yoksundur ve bir tamsayı alma ilkesine göre çalışır. Gerekirse, istenen sayı sistemine göre istenen tabana göre.
Yukarıda gösterilen intval() PHP örnekleri, ana uygulama alanının hesaplamaların mantığı değil, algoritmanın mantığı olduğunu göstermektedir.
Bu işlev, bir HTML sayfasını doğru bir şekilde görüntülemek (parametrelerde CSS kurallarını ve HTML etiketlerini kullanarak) ve dizi anahtarları, veritabanı tabloları satırları, numaralandırma eylemleri, sayma olayları oluşturmak için veri oluşturmak için ideal bir araçtır.
Dünyanın her yerinden müşterilere dokunan bir uygulamam var ve doğal olarak veritabanlarıma giren her şeyin UTF-8 kodlu olmasını istiyorum.
Benim için asıl sorun, herhangi bir dizenin kaynak kodlamasının ne olacağını bilmememdir - bir metin alanından olabilir (kullanarak
Altın Numaralar Güzel bir telefon numarası nasıl satılır
Kripto para madenciliği: basit kelimelerle nedir
En iyi dizüstü bilgisayar işletim sistemi: Eksiksiz inceleme
Sınıf arkadaşlarından müzik indirmek için programlar Sosyal ağ sınıf arkadaşlarından üzücü bir şarkı indirin
Yandex tarayıcısının mobil versiyonu