WordPress’in geliştirilmesi için PHP’yi incelemek: while () döngüleri
Bu PHP döngü tartışmasına hoş geldiniz: Döngü nedir, peynir altı suyu önemlidir ve PHP Loop () PHP’nin nasıl kullanılacağı. Bu makale, WordPress’in geliştirilmesi için PHP’nin temellerini açıklayan dizimize devam ediyor. Döngüye derin dalışımız, önceki makalede tartıştığımız konuya, özellikle kontrol akışı kavramı: hem PHP’de hem de diğer tüm zorunlu programlama dillerinde “ne zaman oldu” mantığı üzerine inşa edildi. Döngü kontrol akışında bir subtopiktir: “ne zaman olur” ve özellikle kaç kez gerçekleştiği hakkında her şey.
PHP genel ihtiyaçlarında programlamadaki önemli bir döngü neden benzer eylemleri birkaç kez tekrarlıyor.
Programlamada, hayatta olduğu gibi, çok yaygın bir ihtiyaç aynı şeyi tekrar tekrar yapmaktır. Hayatta, bu “lavabodaki her plaka için: sabun, ovalayın ve durulayın, sonra kurutma rafına, sonra lavabo boş olana kadar koyun.” Ya da kelimenin tam anlamıyla milyarlarca örnek. Programlamada bu “WordPress veritabanındaki her kullanıcı için: Kullanıcı adını alın, tüm kullanıcı adları alınana kadar devam edin.” Ya da kelimenin tam anlamıyla milyarlarca örnek. PHP’de bu tür tekrarlanan görevi kodlamak için, Loop şehirdeki tek oyundur. Hızlı bir örnek verelim.
Neden bir döngüye ihtiyacımız var: basit bir örnek aşağıdaki ihtiyaçları göz önünde bulundurun: “0 ile başlayıp herhangi bir sayıya kadar tamsayıları sırayla yazdıran bir işlev yazmak istiyorum.”Bunu nasıl kodlarız?Önce döngü olmadan deneyelim: <? Php // tamam, bunu döngüler olmadan deneyelim … işlev kont_up_from_zero ($ top_number) {// en üst sayı 0 ise, bu kolaysa ($ top_number === 0): echo '0';// "0" // yazdıracak veya belki 1 Elseif ($ top_number === 1): echo '0 1';// "0 1" // yazdıracak veya en iyi sayı 2 Elseif olabilir ($ top_number === 2): echo '0 1 2';// "0 1 2" yazdıracak // Tabii ki, en iyi sayı da 3 olabilir … Elseif ($ top_number === 2): echo '0 1 2 3';// "0 1 2 3" // … veya … 4 … elseif ($ top_number === 4) yazdıracak: echo '0 1 2 3 4';// "0 1 2 3 4" yazdıracak // … bekle, bu işlevin sonsuza dek devam etmesi gerekiyor mu? … Endif;} Tamam, döngü kullanmanın zamanı geldi:
<? PHP // Hey millet yeni öğrendim Kont_up_from_zero ($ top_number) {$ i = 0; // operatör <= "" i <= $ top_number): echo $ i. ''; // $ i artı "" $ i ++ ne olursa olsun yazdıracak; // Bu, "$ 1 artışı 1" anlamına gelir; } count_up_from_zero (6); // Bu örnekte gösterildiği gibi "0 1 2 3 4 5 6" yazdıracak, bilinmeyen bir miktarda tekrarlayan bir PHP kodu yazmak istiyorsanız, bir döngüye ihtiyacınız var. Daha da yaygın olan, gerçekten kodlama WordPress veya diğer PHP yazılım döngüsüne girdikten sonra gerçekten her yerde. PHP'de Loop işlevlerini nasıl daha yakından bakalım, önce bu makalede, () döngüsünde () PHP'de nasıl görünelim ve ayrı bir makalede loop foreach () 'yi tartışalım. Kontrol akışı ile ilgili makalede bahsettiğim gibi, en azından WordPress'te – döngü için bir döngü için hiç bulamadım – () bir döngü olmak için daha basit bir refaktör yapamıyorum. Bu yüzden () döngüsü için sözdizimi öğrenmenizi öneririm, ancak burada tartışmayacağım. Benzer şekilde, bugün PHP'nin bile bir şey olduğunu öğrendim … olsa da, bunu kaçırmak güvenli olabilir. Php while () döngüsü: nasıl ve neden kullanma Kaç tane () döngüsü, () döngüsünün önemli kısımlarını düşünür () döngüsünün biraz içeri girdiğini () kendisi. Kod ne yaptı ve () PHP () PHP daha geniş bir şekilde nasıl çalışır?
() İçindeki koşullar doğru kaldığı sürece tekrarlanır. While Loop (), içindeki koşullar doğru olmaya devam eder (tekrarlanır). Uygulamada nasıl çalıştığını görmek için birkaç örneğe bakalım: <? Php // false true'ye eşit değildir, bu nedenle bu döngü bir kez çalışmaz (false === true): echo 'hi'; // Bu kod asla bitmeyecek; // false her zaman doğru değildir, bu yüzden bu döngü asla çalışmaz // Bu kod yukarıdaki örneğe eşdeğerdir (false): echo 'hi'; // Bu kod asla bitmeyecek; // true her zaman doğrudur: PHP (true): echo 'lo'; // PHP bitene kadar "Lololololol" yazdıracak; // Şimdi bir yere varıyoruz: Bu döngü 10 kez çalışacak // ve yazdıracak "0123456789" $ i = 0; while ($ i <10): echo $ i; // $ i ++ 'a eşit olan her ne olursa olsun yazdırır; // Bu, "1 by bo by 1" anlamına gelir; Yukarıdaki dört örneğin her biri, PHP'deki () geçerli bir döngüdür. Bununla birlikte, gerçekten yararlı olan tek şey, her ikisi de çalışan (ilk ikisinin aksine) ve duran dördüncü. Kontrol akışının sırası:
İlk olarak, $ 0 olarak ayarladım.
Loop while () sordu: "$ $ 10'dan az mı?" Evet, bu (bu 0), böylece döngüdeki kod çalışır.
Döngü içinde, echo $ i; HTML belgesine "0" yazdırma komutu.
Döngü içinde, $ i ++; Komut 1 ila $ i ekleyin. $ i şimdi 1 ile aynı.
Döngü bitti, bu yüzden geri döndü ve tekrar soruyor: "$ 10'dan az mı?" Evet, bu (bu 1), bu yüzden döngüdeki kod çalışır. Bu sayfaya "1" yazdırır ve $ i ekler, böylece $ i şimdi 2'ye eşittir.
Bu işlem 2, 3, 4, 5, 6, 7 ve 8, I $ 'a kadar 9 ile aynı ve bu sayfada "9" puan aldık. Şimdi 1 ila $ i ekleme zamanı. $ İ 10 ile aynı yapar.
Şimdi tekrar geri dönüyoruz ve soruyoruz: "$ 10'dan az mı?" Hayır, değil (bu 10), bu yüzden döngü yürütmeyi durdurur. PHP daha sonra sayfadaki bir sonraki kod indirimine geçecektir.
Yukarıdaki dördüncü döngü, PHP'nin "0123456789" yazdırmasına ve daha sonra bir sonraki şeye geçmesine neden olan – () basit ve fonksiyonel bir floop.
Yineleyiciler ve I $ Yukarıdaki kodda görebileceğiniz gibi, $ i değişkeni bir süre () döngüsünün işleyişi için çok önemlidir. Bunun ne sorunu var? () Genellikle yineleyiciler kullanırken: "kaç kez" bir şey yaptınız. $ İ değişkeni bir yineleyicidir: "kaç kez" bir şey yaptığınızı hesaplayan mevcut değişken. Bu, turu saymak ve her turdaki kronometreyi tıklamak gibidir: Her tıklama kronometre $ i ++ ile tek tek artışla aynıdır; .
Yineleyicimiz $ I olarak adlandırılmalı mı? Teknik nedenlerle değil, hayır: Bu sadece bir kongre. $ Metallicasearlyworkwassuperior ++ yazmak için bir parmak hızınız varsa yineleyicilerinize $ Metallicasearlyworkwassuperior adını verebilirsiniz; Döngünüzün altında.
Ancak kongreyi yineleyiciniz $ i (veya aynı anda birkaç yineleyiciye ihtiyacınız varsa, en azından WordPress'te oldukça nadirdir) adına adlandırırsanız, diğer programcılar ne yapmaya çalıştığınızı anlayacaktır. .Yani bunu öneriyoruz.<? Php $ meyve = ['Apple', 'muz', 'Mango'];Echo $ meyveler [0];// "Apple" echo $ meyveleri yazdıracak [1] // "Banana" echo $ meyveleri yazdıracak [2] // "Mango" echo $ meyveler [3] yazdıracak!Bu nedenle, genellikle çok güzel ve aynı zamanda oldukça teknik nedenlerle 0'dan sayılmayı öğrenmek istiyoruz, programlama dilinin çoğu – PHP dahil – 1'den değil 0'dan sayılmaya başlar. Örneğin, 0 dizininden başlayarak PHP dizisi:
<? Php $ meyve = ['Apple', 'muz', 'Mango']; Echo $ meyveler [0]; // "Apple" echo $ meyveleri yazdıracak [1] // "Banana" echo $ meyveleri yazdıracak [2] // "Mango" echo $ meyveler [3] yazdıracak! Bu yüzden genellikle yineleyicilerimizin de 0'dan başlamasını istiyoruz: <? PHP // Bu döngü 100 kat $ i = 0 çalışacaktır; while ($ i <100): $ i ++; Sonunda; // Bu döngü de 100 kez çalışır, ancak bunu yapmayın: // Programlama dillerinin $ i = 1 olduğunu düşünmüyor; while ($ i <= 100): $ i ++; Sonunda; } // İşte neden 0 $ meyve = ['Apple', 'Muz', 'Mango'] 'dan saymaya başlayacağınızı gösteren başka bir örnek; // Bu döngü "Apple Banana Mango" yazdıracak $ i = 0; // count () size 3 iken ($ i <count ($ meyveler)) $ meyve dizisi öğelerinin sayısını verir: echo $ meyve [$]. ''; Sonunda; // Bu döngü "Muz Mango" yazdıracak // İlk dizi öğesini atladınız, // Muhtemelen $ i = 1; while ($ i <count ($ meyveler)): echo $ meyveler [$ i]. ''; Sonunda; } count_up_from_zero (6); // "0 1 2 3 4 5 6" yazdıracak, birkaç istisna dışında yineleyicinizi 0'da başlatmanın bir yolunu bulmalısınız.
Kısacası: Birkaç istisna dışında, yineleyicinizi 0’da başlatmanın bir yolunu bulmalısınız. Break ifadesini () şimdiye kadar () döngülerini kullanarak kullanarak, doğal sonuçlarına kadar uzanan WIRE () ‘ni gördük – yani, () ifadesinde listelenen koşullar artık doğru değil. PHP’de çalıştırdığınız TRIE () döngüsünü veya diğer döngüleri bitirmenin başka bir yolu var. Bu bir ara ifadesi. İşte bir örnek. Bu aslında rastgele bir sayı üreten Rand () PHP işlevini kullanarak tam işlevsel bir oyundur: <? Php $ Target_number = Rand (1, 6); // $ Target_number artık 1 ila 6 $ my_roll = rand (1, 6) arasında rastgele bir tamsayıdır; // $ my_roll artık 1 ila 6 echo 'hedef rulosu' arasında rastgele bir tamsayıdır. $ Target_number. '. '; $ Rolls_needed_to_win = 0; // Hedefimizi yuvarlamamızın kaç rulo aldığını sayalım // (true) WEHB mola ifademize ulaşacakken: echo 'Rolled A'. $ my_roll. '. '; $ rolls_need_to_win ++; // biz yeni yuvarlandık, rulo sayısına 1 ekledik // Rulonumuz hedef rulo ($ my_roll === $ Target_number): echo 'kazanan !!! '; kırmak; // Bu, döngü endifinden çıkmanın yoludur; // rulmamız hedef ruloya eşit değildi, bu yüzden tekrar yuvarlayın ve $ my_roll = rand (1, 6) etrafında döngü; // $ my_roll yine 1 ila 6 arasında rastgele bir tamsayı olacak; // Kazandıktan sonra 'ihtiyacınız olan' bilgi yazdırın. $ Rolls_needed_to_win. 'Hedefinizi yuvarlamak için Trias'. $ Target_number. '.'; Gördüğünüz gibi, mola "daha erken" döngüden çıkacak
, döngü için tasarlanan koşullardan sonra (burada uygun bir kaydırma yapmak) yerine getirilir.Mola döngüden çıkmasına neden olduktan sonra, PHP yürütülmeye devam edecek, böylece sondan sonraki çizgi yürütme için bir sonraki satır olacak.Kırılma ile (true), tartışmalı olarak biraz çirkin bir kod kullanmasının (doğru) kullanıldığını unutmayın.Bu yüzden bazı programcılar Do … ancak yine de tartışmayın.Gördüğümüz gibi yineleyiciler olmadan () döngü, döngü while () () yararlıdır – ve sitenize zarar vermez – iki özelliğe ihtiyaç duyar: birkaç koşulda çalışabilmelidir."Döngü" her zaman yanlış olan bir şey boş bir koddur.
Koşduktan sonra asla sınırsız tekrarlanmamalıdır.