Dizeyi php dizisine dönüştürün. PHP: dizgeye diziler. Dizeleri dizilere dönüştürün ve geri alın. Dizeleri ayrıştırma ve yeniden birleştirme - veri doğrulama

  • 03.11.2019
2.8K

PHP patlatma yöntemi, bir dizeyi belirli sayıda alt dizeye bölmek için kullanılır.

Yöntem Sözdizimi

PHP patlatma yöntemini kullanan bir örnek:

$dizi_adı = patlat($sınırlayıcı, $string_to_split, $no_of_breaks)

Bir telefon numarasını bölmek için patlatma kullanımına bir örnek

Bu örnekte, bir dize değişkeni tanımladık ve ona aşağıdaki biçimde bir telefon numarası atadık:

001-234-567678

Bundan sonra, sınırlayıcı olarak kısa çizgi (tire) kullanarak dizeyi bölmek için patlatma yöntemi kullanıldı. Döndürülen dize dizisi bir diziye atandı.

Daha sonra, telefon numarasının alt dizileri olan dizi öğelerinin değerlerini görüntülemek için bir sisleme döngüsü kullandık. Limit parametresi belirtilmediği için, telefon numarasının tamamı üç alt diziye bölünecektir:


Demoyu ve kodu görüntüle

Sınırlayıcı olarak boşluk içeren örnek

Bu PHP patlatma satır sonu örneği, sınırlayıcı olarak boşluk kullanır. Örneğin, şu satırı ele alalım:

Örnek yine limit parametresini kullanmaz. Dize oluşturulduktan sonra, onu parçalamak için patlatma yöntemini kullandık. Daha sonra dizinin döndürülen öğelerini görüntülemek için bir sisleme döngüsü kullandık.

Son olarak, dizideki alt dizelerin sayısını yazdırmak için count() işlevini kullandık:


Demoyu ve kodu görüntüle

Limit parametresi örneği

Bu yukarıda açıklanan örnektir, burada satır başına bölme sayısını belirtmek için limit parametresini kullanmamız dışında. Kullanılan satır aşağıda gösterilmiştir:

Bu, PHP'de dize bölünmesini sağlayan patlatma öğreticisidir.

PHP patlatma örneğinde, sınırlayıcı olarak boşluk kullandığımızda, yalnızca 10 alt dize döndürüldü. Bu sefer limit parametresi kullanılarak 5 bölme tanımlandı:


Demoyu ve kodu görüntüle

Demo sayfası yalnızca beş alt dize görüntüler, sonuncusu dizenin geri kalanını içerir. Dizi öğelerinin toplam sayısı da yukarıdaki örnekte olduğu gibi 10 değil 5'tir.

Patlatma yöntemi ne işe yarar?

patlat() yöntemi PHP bölünmüş) verilen dizeyi bölmek için kullanılır. Web formunun aşağıdaki biçimde ülke/bölge kodu içeren bir telefon numarasını kabul ettiğini varsayalım:

001-234-567678

Bir tire ile ayrılan ülke ve alan kodunu ayırmamız gerekiyor. Bir telefon numarasını bölmek için, sayıyı giriş parametresi olarak aldıktan sonra kısa çizgi (tire) sınırlayıcı ile patlatmayı kullanabilirsiniz.

Patlama bir dizi alt dize döndürdüğünden, patlatma yöntemi sayıyı aşağıdaki öğe dizisine böler:

  • İlk eleman = 001
  • İkinci eleman = 234
  • Üçüncü eleman = 567678

PHP patlatma işlevi nasıl kullanılır

PHP patlatma işlevinde üç parametre belirtilebilir. Sonuncusu, bölme sayısını belirttiğinden isteğe bağlıdır ( maksimum alt dizi sayısı) gerekli değil.

Her parametrenin açıklaması:

$dizi_adı = patlat($sınırlayıcı, $string_to_split, $no_of_breaks)

  • $Array_name - dizi; patlatma yöntemi, bir dizeyi bölerek elde edilen bir dizi diziyi döndürdüğü için;
  • $sınırlayıcı - Sınırlayıcıyı belirtir. Telefon numarasını ayırmak için sınırlayıcı olarak "-" kullandık.

$ sınırlayıcı olarak boşluk, virgül veya diğer sözcükleri de kullanabilirsiniz.

  • Sonraki parametre, patlatma yöntemi kullanılarak bölünecek dizedir. Bir dize değişkeni, bir cümle vb. olabilir;
  • Son parametre, bir dizedeki maksimum alt dize sayısını veya bölme sayısını belirtir. Bu isteğe bağlı bir parametredir.

PHP'nin patlatma dizisinin pozitif bir sınır argümanı varsa, döndürülen dizi, son öğe dizenin geri kalanını içerecek şekilde maksimum sayıda öğe içerecektir.

Verileri bir temsilden diğerine dönüştürmek, sorunu çözmek için popüler, genellikle tek mekanizmadır. Dizi, bir nesnenin basit bir durumudur. Bir dize, iletim, işleme veya depolama için bilgilerin doğal bir temsilidir.

PHP'de uygulanan deneyim ve anlambilim: diziler, işlevler ve sözdizimsel yapılar, bilgilerin sunulduğu biçimde işlenmesi için en uygun çözümleri yaratmayı mümkün kılar.

Bilgi: karakterler, dizeler ve veriler

"Saf" biçiminde bilgi, bir karakter dizisi, konuşma veya bir dizi sinyaldir. Programlamada diziler, diziler ve nesneler görünür - bunlar yapay dizi yapılarının çeşitleridir. Sayılar da dizelerdir, ancak sayılar karakter değildir.

PHP, bir diziyi birçok farklı şekilde diziye dönüştürmenize izin verir. Bunu "kendi başına" yapan iki özel işlev vardır:

  • $aArr = patlat("x", "dize");
  • $aStr = implode("y", $aArr).

İlk işlev "x" sınırlayıcı karakterini bulur ve "dize" dizesini onun üzerine böler. Ortaya çıkan dizi, tam olarak "x" karakterleri arasında bulunan öğe (satır) sayısını içerir. Ayırıcı karakterin klasik olması gerekmez:

  • virgül;
  • nokta;
  • noktalı virgül.

Bir dizeyi bir alt dizeye veya özel bir karakter kombinasyonuna göre bölebilirsiniz.

PHP'de dize uzunluğu strlen(), dizi uzunluğu count() şeklindedir. İlk durumda, karakter sayısı, ikinci durumda, eleman sayısı olarak kabul edilir. Sınırlayıcı karakter dizi öğelerine dahil edilmediğinden, count() değeri dönüştürülen dizedeki sınırlayıcı sayısı eksi bire eşit olacaktır.

PHP'nin ters dönüşümünde, diziler sınırlayıcı karakterli (boş olabilir) bir dizgeye dönüştürülür ve tüm veriler (sayılar ve mantıksal ifadeler) tek bir dizgede birleştirilir. Bir dizi öğesi başka bir dizi olabilir, ancak programcı bu durumu özel olarak ele almalıdır. implode() işlevi özyinelemeli olmaktan uzaktır.

Bu örnekte, elemanları arasında başka bir dizi olmadığı sürece PHP dizilerini bir dizgeye dönüştürmekte sorun yoktur. İlişkili öğeleri dönüştürürken, temel bilgiler kaybolur. Özellikle, "erik" ve "şeftali" öğelerinin anahtarlarından arındırılacaktır.

Veri ayırıcılar ve anahtarlar

Nokta, virgül, iki nokta üst üste vs. ayırıcı olarak düşünmemelisiniz.Bu, verileri birbirinden ayırmanın özel bir durumudur. PHP'de bir dizgiyi dönüştürürken, çok boyutlu bir dizi çalışmayacak ve ilişkisel dizinlerin gelebileceği hiçbir yer olmayacak.

Bir dizgiyi sınırlayıcı ile ayrıştırırken, her zaman dizgeler elde edilir. Ancak bu, orada durmak için bir neden değil. Bir satırı kurucu unsurlarına ayırdıktan sonra daha ileri gidebiliriz.

Örneğin, bir paragraf vardı, içinde birkaç cümle vardı (ayırıcı "." - nokta), cümlede birkaç kelime öbeği (ayırıcılar "," - virgül, ";" - noktalı virgül ve "." - nokta), kelime öbeği kelimeleri içerir ( ayırıcı " " boşluktur, "," virgüldür, ";" noktalı virgüldür ve "." bir noktadır).

PHP'de böyle bir sökme işlemiyle, çok boyutlu bir dizi kolayca ortaya çıkacaktır, ancak algoritma çok çirkin olacaktır: ayırıcıların sayısı artar ve bitişik paragraflar arasında bir bağlantı olmaması, cümlelerin, cümlelerin ve kelimelerin tekrarlanmasını sağlamak için garanti edilir.

Dizeleri ayrıştırırken, basamak dizilerini hemen sayılara ve boole değerlerini doğru ve yanlışa dönüştürebilirsiniz. Ancak bunlar ayrıntılardır, anahtar bilgi zaten görünmeyecektir, çünkü anahtar anlamdır, otomatik olarak yalnızca sayısal bir dizin oluşturulabilir.

Karmaşık ayırıcılar

Bir PHP dizisinin bir dizgeye çıktılanması genellikle yardımcı amaçlar için kullanılır. Yapılandırma dosyası geleneksel olarak satır satır yazılır ve ad, değerden bir eşittir karakteri veya iki nokta üst üste ile ayrılır.

Bu çözüm ile PHP'deki dizinin çıktısı bir dosyaya yapılır, satır ayrımı otomatik olarak elde edilir ve ters tanıma ile kolayca ilişkisel diziler elde edilir.

Dosyayı okuyan programcı satırları alır ve her satırı "=" veya ":" ile keserek adını ve değerini alır. Çok popüler bir manipülasyon, ancak XML gösterimini basit bir temelde kullanmak daha modern olsa da, isimler ve değerlere ek olarak, örneğin değişken nitelikler gibi ek veriler saklanabilir ve geri yüklenebilir.

Paragraflı bir örnekte (örneğin, bir sözlük oluşturmak için doğal metin veya bir veri örneği oluşturmak için ayrıştırmanın sonucu), önemli olan bir dizeyi bir diziye dönüştürmek için özel bir prosedür değil, herkes için karmaşık bir çözümdür. paragraflar veya bilgi blokları.

Tipik olarak, bu tür bir görev, oluşturulan veri "kümesinin" içindeki bilgileri aramak veya bir dizgeye geri birleştirmek için kullanılması gerektiğinde, ters bir çözüm gerektirecektir.

Dizeleri ayrıştırma ve yeniden birleştirme - veri doğrulama

PHP'de: dizgeye diziler kesin çözümdür. Orijinal bilgi sözdizimsel hatalara, fazladan boşluklara, yanlış karakterlere sahip olabilirse, bunlar ayrıştırma sırasında orada olmayacaklardır. İlk bilgilerin yazılı olmayan programlama yasalarına göre dönüştürülmesinin sonucu kesinlikle resmi olarak gerçekleştirilir ve sonuç açıkça sıralanır.

Ters prosedür doğru kaynak dizesini yaratacaktır. İlk bilgi miktarını ve ters dönüşümün sonucunu karşılaştırırsak, nerede hataların yapıldığı veya verilerin kaybolduğu hakkında sonuçlar çıkarabiliriz. PHP'de, dizinin orijinal uzunluğu bağlamında bir dizinin uzunluğu, istenen sonuçları çıkarmamıza izin verebilir.

Saat, tarih ve etkinlik etiketleri

Kritik projelerin geliştirilmesinde, örneğin zaman veya olaylar gibi kontrol nesneleri oluştururken, bir dizi verinin bir temsilidir ve bir dizi başka bir temsildir. Ancak uygulamada eşdeğerdirler.

Matematiksel veya mantıksal hesaplamalar yapmak gerektiğinde, programcı diziyi manipüle eder, veri depolamak gerektiğinde, dize sürümünü kullanır.

Veritabanı alanı erişim dizinleri - MySQL ve PHP'nin birlikte çalışmasının gerçek uygulaması, satır başına diziler = birden çok veritabanı tablosunun satırları arasında bir dizin. Veritabanı on tablo içeriyorsa ve her tablodaki satırlar belirli bir kombinasyonda adların (değerlerin) bir kombinasyonu ile seçilebiliyorsa, o zaman satırlara erişim dizileri oluşturarak, daha sonra bunlara indeks oluşturma algoritmasını kullanarak erişebilirsiniz, ve veritabanını arayarak değil.

Bir diziyi bir dizgeye dönüştürmek, istenen indeksi oluşturmak için bir algoritma olarak görülebilirken, dizinin içeriği tamamen farklı olayların veya kullanıcı eylemlerinin kontrolü altında oluşturulur.

Dizileri birleştirme

PHP işlevleri, dizileri özgürce değiştirmenize olanak tanır. Ancak, benzersiz bir veri seçimi yapmak veya bir dizideki verileri bulmak için her zaman görevler vardır.

İlk sorun yinelemeli bir şekilde çözülür: bir dizi (veya birkaç dizi) sıralanır ve bir dizi benzersiz değer oluşturulur - bariz bir çözüm, ancak en verimli olanı değil.

Bir dizide veri bulmak da bir döngüdür ve çok sayıda öğe varsa, döngü oldukça uzun olacak ve önemli miktarda zaman alacaktır. Bir diziye bir dizi göndermek ve gerekli öğenin bir oluşumunu bulmak için strpos() işlevini kullanmak mümkündür, ancak bu, hatalı bir oluşumu tespit etme sorununu ortaya çıkarır.

Örneğin "tepsi" kelimesi aranmış ve bunun "çekiç" kelimesinde geçtiği tespit edilmiştir. Tüm dizi öğeleri, belirsizliği önleyecek özel bir ayırıcı kullanılarak bir dizede birleştirilirse, bu tür hatalardan kurtulabilirsiniz.

Satır "[tepsi]" ve "[çekiç]" içeriyorsa, arama ile ilgili herhangi bir sorun olmayacaktır.

Ancak strpos() işlevinin, gerçek veri hacimlerinde bir dizinin öğeleri üzerinde yinelenen bir döngüden daha hızlı olduğunun garantisi yoktur.

En iyi çözüm, dizi veya dizenin kendi başına doğru olanı yapmasıdır. Dizileri biraz karmaşıklaştırır ve dizeleri basitleştirirseniz, ilki bir nesnenin özel durumu ve ikincisi geleneksel serileştirme olduğundan, herkes kendi işini yapacaktır.

Doğru zamanda, nesne bir dizidir ve bir dizgeye ihtiyaç duyulduğunda bir dizge olacaktır. Bu durumda, nesnede aynı anda hem dizi hem de dize olması kesinlikle gerekli değildir. Hızlı erişim ile benzersiz bir veri yapısı oluşturabilirsiniz. Ve "dizi" ve "string" mantığı, nesnenin yöntemlerine taşınmalıdır.

Nesne yönelimli yaklaşım, birçok dizi işleme görevinin çözümünü basitleştirir, dizilere, döngülere ve PHP'nin dize işleme işlevine odaklanmamanızı sağlar.

Hem diziler hem de diziler, gerçekliğin, kapsamın, görevin gerçek anlamıdır. Böyle bir görev yoktur - dizileri bir dizgede PHP'ye göndermek. Ancak bir önceki algoritmada elde edilen sonuçlara göre bir paragraf (cümle, deyim, kelime, sayı...) alma görevi vardır.

Önceki algoritma bir anlam taşır ve bu anlamın tam ifadesi bir dizide bulunur. Algoritmanın bir sonraki aşaması, anlamın daha ileri işleme veya uygulama için uygun başka bir temsile dönüştürülmesidir.

Algoritmayı anlam ve veri dönüşümlerinin dinamiği olarak ele alarak güvenilir, anlaşılır ve verimli dönüşümler oluşturmak mümkündür.

Bir dizgiyi sınırlayıcı ile diziye dönüştürmek için patlat() işlevini kullanabilirsiniz.
Gerekli parametreler: sınırlayıcı ve dize.

// Örnek 1 $pizza = "parça1 parça2 parça3 parça4 parça5 parça6"; $parça = patlat(" ", $pizza); yankı $parça; // parça1 yankı $parça; // yığın2 // Örnek 2 $veri = "foo:*:1023:1000::/home/foo:/bin/sh"; list($user, $pass, $uid, $gid, $gecos, $home, $shell) = patlat(":", $veri); yankı $kullanıcı; // foo echo $geçiş; // *

Dizeyi düzenli ifadeyle diziye böl

Patlama()'nın yetenekleri yeterli değilse, daha güçlü bir işlev kullanılabilir: preg_split() . Bir dizgiyi sabit bir karakter kümesine göre değil,

Belgelerden örnek:

// dizeyi, " ", \r, \t, \n ve \f dahil olmak üzere isteğe bağlı sayıda virgül ve boşluk karakterine bölün $keywords = preg_split("/[\s,]+/", " hiper metin dili, programlama"); print_r($anahtar kelime);

Sonuç:

/* Dizi ( => köprü metni => dil => programlama) */

Dizeyi karakter sayısına göre diziye dönüştürün

str_split() işlevi, bir dizeyi belirli sayıda karaktere sahip öğelere bölerek bir diziye dönüştürür. Nasıl kullanılacağını bilmek ister misin? Belgelere göz atın.

$str = "Merhaba Arkadaş"; $dizi2 = str_split($str, 3); print_r($dizi2)

Bir php dizisini bir dizgeye dönüştürmeniz gerekiyorsa, bunun için birkaç araç vardır. Hangi aracı kullanacağınız hedeflerinize bağlıdır.

1. implode() işlevi

Onun yardımıyla, bir dizinin öğelerini herhangi bir ayırıcı aracılığıyla bir dizeye "yapıştırabilirsiniz". Devamını oku: implode
Örnek:

echo implode("|", dizi(1, 2, 3)); // şu dizeyi döndürür: 1|2|3

Bu işlevde, tam tersine, sınırlayıcıdaki dizeyi dizi öğelerine bölen bir antagonist patlatılır() bulunur. Devamını oku: patlat

2. serialize() işlevi

Fonksiyonun ana görevi, bir değişkeni (bizim durumumuzda bir diziyi) depolama için uygun bir duruma dönüştürmektir.
Bir diziyi daha sonra bir diziye dönüştürmek için bir dizgede saklamak için kullanılır. Diziyi bir dosyaya veya veritabanına kaydedebilir ve ardından komut dosyasının bir sonraki çalıştırılışında geri yükleyebilirsiniz.
Devamını oku: serileştirme

$dizi = dizi("1" =>; "eleman 1", "2"=> "eleman 2", "3" => "eleman 3"); $dizi = seri hale getir($dizi); yankı $dizi; // dizgeyi döndürür: a:3:(i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3" ;)

Sonra bu satırdan tekrar bir dizi alabilirsiniz:

$dizi = seri hale getirme($string);

3. json_encode() işlevi

Verilerin bir JSON temsilini döndürür. Nedir, okuyabilirsiniz.
Bizim durumumuzda, bu işlev serileştirmeye benzer, ancak JSON esas olarak veri aktarmak için kullanılır. Ön uçta javascript ile iletişim kurmak için bu formatı kullanmanız gerekecek. Devamını oku: json_encode

$dizi = dizi(1 => "bir", 2 => "iki",); $json = json_encode($dizi); yankı $json; // ("1":"bir","2":"iki")

json_decode() ters işlevi, işlevin ikinci parametresi yanlışsa, stdClass türünde bir nesne döndürür. Veya ikinci parametre olarak true iletilirse bir ilişkisel dizi döndürün. Ayrıntılar burada.