PHP dizisine genel giriş
Bu makale PHP dizisine derin bir giriş. PHP dizisinin ne olduğunu, nasıl yapılacağını ve onunla çalışacağını ve deneyimli PHP geliştiricileri tarafından bilgilendirici olarak kabul edilebilecek daha az bilinen bazı konuları tartışacağız. Dibe geri dönmek, sağlam bir temeliniz olduğundan emin olmanın iyi bir yoludur. Bu, PHP’de dizi gibi önemli bir rol oynayan konular için çok yararlıdır. PHP dizisini tam olarak anlamadan WordPress geliştirmekte çok uzak olabilirsiniz, ancak temelleri bilmiyorsanız hiçbir şey alamayacaksınız. PHP’de dizinin temelleri ile başlayacağız ve daha karmaşık konuları tartışacağız.
PHP dizisi nedir? En temel düzeyde, PHP dizisi bir listedir. Daha önce programladıysanız, diğer birçok programlama dilinde aynı adı (lüks: “inşaat”) bulabilirsiniz. JavaScript ve diğer birçok dilde, dizi basit bir değer listesidir. Bunun gibi bir liste yalnızca bir anlam katmanı olacaktır; Ve PHP’de bazen dizi sadece çeşitli öğelerin bir listesidir. Yani, bir tamsayı olabilir: [1, 2, 3, 4, 5] veya karışım tipinden [true, 1, ‘kırmızı’, 5, $ object, ‘Marshmallow’]. Bu liste gibi kümelerden biri geçerli bir PHP dizisidir.
Fred bana diziyi alışveriş listesi gibi şeyler olarak görmeyi sevdiğini söylüyor.PHP’de belirtilen diğer günler listem şöyle görünecek: $ to_buy = [‘muz’, ‘soğan’, ‘çikolata’];Şeylerin bir listesini içeren dizi, programlama için çok yararlı olabilir.Diyelim ki alışveriş listenizi tekrarlamak, her ürün için bir mağaza bulmak tek tek bulun.Bu PHP dizisinin en temel formu için mükemmel bir kullanımdır.Başka bir yerde * nasıl * yaptığını tartışacağız, ancak bir dizinin PHP veri yapısı bunun için mükemmeldir.
İlişkili dizi, PHP dizilerini diğer dillerden ayıran sıralı çiftlerin bir kombinasyonudur. Yukarıda açıkladığımız liste olarak sadece veri türü olmamalarıdır. PHP’de, biraz daha yapılandırılmış bir dizi (veya “iki boyutlu”) da vardır. Burası gerçekten “anahtar değerler” kümesini tutuyoruz. Buna PHP’de “ilişkilendirici dizi” denir, çünkü dizilerimizin ana değeri ile bir şeyi “bağlamamıza” izin verir. Bu, oldukça anlamlı olan bilgileri teşvik etmemizi sağlar: [‘Name’ => ” David Hayes ‘,’ Yaş ‘=> 33,’ Yarış ‘=>’ Beyaz ‘,’ Saç ‘=>’ Bald ‘ ] Yazar hakkında bilgi en ilginç örnek değilsiniz, ne de en kullanışlı değilsiniz. Ancak bu, bu dizinin “ikinci boyutunun” bize ne verdiğini açıkça göstermektedir: içerdikleri değerler için daha fazla bağlam. “Değer” -saja, [‘David Hayes’, 33, ‘beyaz’, ‘kel’] dizisi anlaşılabilir. Ama belki 33 ayakkabının büyüklüğü veya uyluk kemiğinin uzunluğudur. Bu nedenle, PHP ve WordPress’in geliştirilmesinde daha basit bir “tek boyutlu” dizi yerine genellikle ilişkilendirici bir dizi kullanmayı tercih ediyoruz.
Unden inden-indensed bir dizi bile tamamen net olmayan başka şeylerin bir dizine sahiptir, ancak yalnızca bir şeylerin listesini içeren bir dizi yapsanız bile, dahili olarak PHP hala bir dizi anahtar değer çifti yapar.Yani [‘muz’, ‘soğan’, ‘çikolata’] aslında şu şekilde ilan edilenle aynı olan bir dizidir: [0 => ‘muz’, 1 => ‘soğan’, 2 => ‘çikolata’] Bu ikinci versiyon daha uzun sürdü, ama gerçekte olan buydu.Bu, diğer önemli şeyleri vurgular: PHP’de “dizin” veya “anahtar” ve diğer programlama dillerinin çoğu, 1’in 0’dan başlamıştır. Bu iyi nedenlerden ötürü, ilk başta kafa karıştırıcı olabilir.Ancak “sıfır indeksleme”, muzun “ilk” değil, “sıfır I” dizi öğesi olmasının nedenidir.Yıllardır programlamış olsanız bile, bu zaman zaman sizi şaşırtabilir.
Biraz sinir olmak: Dizi, tüm PHP dizileri aslında ilişkilendirici olduğu için sipariş edilen bir haritadır, çok güçlüdürler. Diğer dillerin çoğu “anahtar değerin” yapısından “dizi” olarak bahsetmez. “Sözlük” olarak adlandırılan pythonlarında, java’da “hash masası”, javaScript’te bu tür davranışlar için “nesneler” yaparsınız. Bu anahtarı keyfi olarak adlandırma yeteneği, PHP dizisi ile ilgili en iyi ve en kötü şeylerden biridir. Çoğu, özellikle WordPress geliştiricileri için, bu dilde en yaygın kullanılan veri türü yapar. PHP belgelerinin birkaç gerçek dil vardır, ancak dizi hakkında çok net değildir. Dedi ki: PHP’deki dizi aslında sipariş edilen bir haritadır. Haritalar, değeri tuşa bağlayan türdür. Bu tür bazı farklı kullanımlar için optimize edilmiştir; Bir dizi, liste (vektör), karma tablo (harita uygulaması), sözlük, toplama, kazık, kuyruk ve belki daha fazlası olarak ele alınabilir. Dizilerin değeri diğer diziler olabileceğinden, ağaçlar ve çok boyutlu diziler de mümkündür. Şimdi önceki bölümümü okudunuz, umarım php.net’in söylediklerini anlayabilirsiniz. Temel olarak, PHP Array CAN (ve orta), basit bir listeden daha ezoterik olan birçok veri kullanımı için kullanılır. Bunun nedeni, temel değerlerle ilişkili bir “sözlük” olabilmeleridir. PHP’de değişen tüm dizi davranışları serisi, tarihsel olarak çok az performans maliyetlerine sahiptir, ancak özellikle PHP 7’de maliyet önemli ölçüde küçülmüştür.
Aralarında akıllı olan insan dizisini bildirmenin tüm yolları, şimdiye kadar sadece PHP dizisine, bazen dirsek parantezlerinin “kısa” dizi işaretlerinin sözdizimi olarak adlandırıldığını fark etmiş olabilirim: []. PHP 5.4’ten önce, Array () işlevini (teknik olarak bir dil yapısı) kullanarak bir dizi bildirmelisiniz, ancak fark bu makalenin aklı başında kapsamın çok ötesindedir). Bu nedenle, 1, 2 ve 3 değerine sahip bir liste bildireceksiniz, bu gibi: Dizi (1, 2, 3) işlevsel olarak, bu sözdizimi ve dirsek parantezleri [1, 2, 3] özdeş … PHP 5.4 veya üstü kullanan sunucuyu çalıştırırken. Bu öğretici WordPress’e odaklanan siteler için değilse, bu hiç sorun değildir. Ancak hala 5.2’ye kadar PHP çalıştırma geçmişine sahip birçok WordPress kodu var. WordPress 5.2’de proje resmi olarak PHP 5.2’yi desteklemeyi durduruyor. (İyi bellek yardımlarından biri.) Yani bu, neyse ki, daha uzun kodu okumak için bilmeniz ve anlamanız gereken şeylerin çoğu.
Daha kısa bir dizi sözdiziminden başka bir kaliteli ilan edilen diziye değer ekleyin Bir süre PHP dizisiyle kullanabileceğiniz diğer birçok yol için uygundur. Diyelim ki bir değer (veya diziye anahtar değer çift) eklemek istiyorsunuz, bunu yapmanın en sevdiğim yolu: // bir sonraki sayısal anahtarla ekleyin: $ num_array [] = 91; // Belirli bir anahtarla ekleyin: $ array [‘new_key’] = ‘new_value’; İlk form için Array_Push’u da kullanabilirsiniz ($ num_array, 91). İkincisi bunu başarmanın farklı bir yolu yoktur. Bu nedenle dirsek parantezleri bir süredir PHP’deki dizilerle ilişkilendirilmiştir. Yazdığınız kodun mantığının nedenleri nedeniyle PHP’de bildirilen diziye genellikle değerler ekleyeceksiniz. Dizi, PHP’de bir tür evrensel veri sahibidir, bu nedenle genellikle onunla böyle şeyler yaparsınız. Dizileri bildirme, okuma ve manipüle etme kolaylığı, PHP WordPress’te Array $ args görmenin ana nedenidir. Ve nesnelerin veya işlevlerin aksine, alınan kod doğru bir şekilde yapılırsa, bildirilen bağımsız değişken veya mülkiyeti iletebilirsiniz. (Dahili WordPress.) Çok fazla ayrıntı tartışmayacağım, çünkü Fred Dray Args konusu hakkında iyi bir makale yazdı:
WordPress Kodlama Deseni: PHP dizisinin değerini okuyan $ args ile işlev seçeneğini ayarlayın Mevcut bir PHP diziniz varsa ve belirli bir anahtardaki değeri bilmek istiyorsanız, genellikle bunu yapacaksınız: $ vall = $ numeric_indexed_array [3]; $ var = $ word_keyed [‘arama’]; Dirsek braketlerinin sözdizimi ile rahat hissetmeye başlarsanız, tüm bunlar sizi şaşırtmayacaktır. Görülmesi gereken en önemli şey, “anahtar” ın dirsek parantezlerinde olması ve anahtarın sayılar veya teller şeklinde olmasıdır. Dizideki veri erişiminden oldukça yaygın olan bir diğer durum, sıfıra girmeyen bir dizideki ilk öğeyi istediğiniz yerdir. (Yani, dizinin ilk ortağı 27 => ‘fil’ gibi olabilir.) Güvenilir anahtarları olmayan bir diziniz varsa, ilk öğeyi almanın yolu Array_Shift PHP işlevidir. Aynı şekilde, son öğeyi istiyorsanız ancak öğe dizini bilmiyorsanız, Array_POP kullanabilirsiniz. (Programlamaya alışkınsanız ve “yığınlar” ı duyuyorsanız, burası genellikle son bölümde bahsedilen itmeyi duyduğunuz ve tam tersi olarak göründüğünüz yerdir.)
Önemli ve mucizevi olan $ _GET ve $ _POST dizisi artık söylenmesi gerekmeyebilir, ancak $ _GET sorgu dizesi öğesi için, $ _Post sayfaya gönderilen http içindir. Belki de PHP geliştiricilerin dizinin değerini okuması gereken en yaygın yer, Superglobal $ _GET ve $ _Post’tur. Bununla ilgili tam ayrıntıyı bu makalenin kapsamı dışındadır, ancak birisinin URL’ye eklediği sorgu dizesinin değerine, http://example.com/?id=102932 veya erişim şekliniz budur. “Gönderilen” değer. ($ _GET, URL’nin sonundaki Qui String öğesi içindir, $ _POST, birisi bir web formunu doldurduğunda en sık sayfaya gönderilen HTTP’nin değeri içindir.) Her ikisi de basit PHP dizileri ve sizin yanınızda insanlar ( Bu genel olarak WordPress sitesinde olabilir) kodunuz çalışmadan önce değiştirebilir veya diğer kodların çalışma şeklini etkilemek için değiştirmeniz gerekebilir. İyi ya da kötü, PHP ona yalnızca diğer tüm diziler gibi herkes tarafından düzenlenebilen bir dizi olarak davranır. Yani yukarıdaki dizi gibi okudunuz, bu yüzden $ Postid = $ _GET [‘ID’
]. İnsanların onlara böyle yazdığı da budur, ancak bu bir girişte ve yeni başlayanları bunu yapmaya teşvik etmiyorum. Son olarak, temel olarak $ _GET ve $ _Post (ve nadiren kullandığım SuperGlobal $ _Cookies) bir satırda birleştiren bir Superglobal $ _Request _request de var. Bir kez daha, bunu kullanmanızı tavsiye etmiyorum çünkü ne olduğu konusunda belirsiz ve dolayısıyla biraz daha az güvenli. Ancak ona erişen kodu görebilirsiniz ve ne olduğunu bilmek iyidir. Her öğede tekrarlamak ve bir şeyler yapmak istediğiniz bir liste (veya ilişkisel dizi) işlerken dizi yoluyla tekrarlama çok yaygındır. İster değiştirin, ekler veya her öğeyi görüntüler. Dizinin her öğesini göstermek aslında ünlü WordPress “Loop” tarafından yapılan şeydir. Bu, wp_post nesne dizisi üzerinden döngülerin tekrarlanmasıdır. PHP nesnelerinin ne olduğu konusunda gerçekten emin olmayanlar için, kısa sürüm, dizilerden daha karmaşık ve yapılandırılmış veri ve işlev kapsayıcıları olmalarıdır. Daha fazla burada açıklandı. “Döngü” çoğunlukla döngü kullanılarak yapılır. (Ve, çok kaotik yapmaktan kaçınmak için teknik olarak çeşitli işlevlere ve nesnelere bağlıdır.) Dizinin en yaygın yolu PHP’de tekrarlanmaktadır. Bu şuna benziyor: foreach ($ Key => $ değer olarak $ array) {echo “tuş $ tuş.”; Echo “değeri $ değeridir.”;
} Foreach hakkında harika olan şey, İngilizce gibi kolayca okuyabilmenizdir. Yukarıda “$ dizisi dizisindeki her öğe için, anahtarı $ tuş değişkeni olarak ve $ değer değişkeni olarak değer olarak kullanacağım. Aşağıdaki kodun her yinelemesi için bir çift kullanın (kıvırcık parantezlerde yer alır). ” Döngü için kullanmayı da tekrarlayabilirsiniz, ancak Foreach PHP’de çok daha yaygındır, çünkü tam olarak beklediğiniz gibi ve yazılması çok daha basittir. Ve bir not – bir dizi anahtarına ihtiyacınız yoksa, bu aynı işlev görür: foreach ($ array us $ değeri). Looping Loop’un ötesinde çok iyi ve yapmak isteyebileceğiniz dizilerle çeşitli yineleme türleri için çok yaygındır. Loop birçok dilde çalıştığından, Loop hala çoğu insanın dizi şeyleri farklı şeylere dönüştürmeyi sevmesinin bir yoludur. Ancak daha iyi bir yol var: PHP’nin Foreach kullanmadan tüm dizi öğelerini değiştirmenizi sağlayacak birkaç işlevi vardır. Bu işlevleri kullanmak size daha temiz bir kod verebilir ve her şeyi daha net hale getirebilir. Ancak yeni başlayan çoğu insan için biraz daha fazla kavramsal karmaşıklığa sahipler. “Fonksiyonel programlama” kavramı nedir
Bu sizin için doğru ya da değil kişisel bir seçim sorunu. Ancak, kalan makalelerin çoğu sizin için bir inceleme gibi hissediyorsa öğrenmeyi düşünmelisiniz. Bu, Array_Map ve Array_Filter: WordPress Geliştiricileri için İşlevsel PHP’ye Yumuşak Giriş: Dizi Göndermesinde Filtreler ve Haritalar Kullanma Nesneler yerine Dizi Dizisi Kullanma? Ortaya çıkan yaygın bir soru, PHP’deki dizi ve nesneler arasındaki farktır. Her ikisi de ilgili verileri barındırabilen kavramsal birimlerdir. Peki fark nedir? Gördüğüm gibi, dizi hızlı olmayan veya yarı yapılandırılmamış bir veri toplama yapmak için çok iyidir. Bu nedenle, daha önce de belirttiğimiz gibi, $ args dizisi WordPress’te çok yaygındır. Ancak bazen daha katı olarak tanımlanmış bir yapı istersiniz veya veri yapısıyla ilgili daha fazla “davranış” veya işlevlere sahip olmak istersiniz. İşte orada ve PHP nesnelerine ulaşmanız gerektiğinde. Nesne özelliği rastgele diziden daha katı olduğundan, nesne özelliğine dizi dizininden daha güvenilir erişebilirsiniz. Bu yüzden Posta Nesnesine $ Post olarak eriştiğimde bir WordPress gönderme dizim varsa PHP’nin bana bağırmayacağından çok daha emin olacağım
]. (Tanınan iyi bir örnek değil, çünkü her iki durumda da WordPress’e inanıyorum. Bir nesnenin $ obj-> uzunluk = 7 özelliği varsa, bazen $ obj [‘uzunluk’] çağırmayı başaran kodu görürsünüz ve 7’yi elde edersiniz? İki yol var. Daha az yaygın olan, bir PHP arayüzü, ArrayicCess olması ve sınıfı uygularsa, nesne verilerine bir dizi olarak erişilebilir. Şahsen, bunu kullanmayacağım ve uygulamayacağım (uyumluluk durumunun dışında), ama daha önce kafam karıştı, bu yüzden bahsetmek istiyorum. Tavsiye etmediğim ancak sıklıkla bulunduğum başka bir şey: PHP nesneleri dizi olmaya zorlanabilir. Nasıl? $ array = (dizi) $ nesne; Bir veya iki yeni başlayanın bu tür bir kodu kopyaladığını gördüm çünkü temel kavramları gerçekten anlamıyorlar ve bu ipucu bir yerde buluyorlar. PHP.NET’in bu konuda söylediği şey budur: Bir nesne diziye dönüştürülürse, sonuç öğesi bir nesne özelliği olan bir satırdır. Anahtar, bazı önemli istisnalar dışında değişken üyenin adıdır: tamsayı özelliğine erişilemez; Kişisel değişkenlerin değişken adlarına eklenen sınıf adları vardır; Korunan değişkenler ‘*’