Massivin php sətirinə birləşdirilməsi. PHP-də effektiv proqramlaşdırma: sətirlərə massivlər. Məlumat: simvollar, sətirlər və məlumatlar




Salam, dünən biz sətri necə bölmək və ondan massiv əldə edə biləcəyinizi öyrəndik. Bu gün sizin diqqətinizə əks funksiyanı təqdim edirəm, onun köməyi ilə edə bilərik massivi sətirə çevirin. Bu adlanır implode funksiyası. Bu funksiyanın işləmə prinsipi əvvəlkinə bənzəyir, lakin bir nümunə istifadə edərək ona baxacağıq:

$massiv = massiv( "Mənim adım Denis") ;
$string = partlatmaq( " ", $massiv);
əks-səda $string;
?>

Üç elementdən ibarət massiv yaratdıq və istifadə etdik implode funksiyaları onu simə çevirdi. Bu funksiya iki parametr qəbul edə bilər. Birincisi isteğe bağlıdır və massiv elementləri arasında hansı ayırıcının tətbiq ediləcəyini bildirir. Bu parametr göstərilməyibsə, massiv elementləri standart olaraq boşluqla ayrılacaq. İkinci parametr isə sətirə çevriləcək massivin özünü müəyyən edir. Bunlar öyrənilən funksiyanın dəstəklədiyi bütün parametrlərdir. Funksiyanın icrası nəticəsində siz sətir alacaqsınız (Mənim adım Denisdir). Ayırıcı olaraq vergülü göstərsəydik, nəticə belə olardı (Mənim adım Denisdir). Düşünürəm ki, bu funksiyanı öyrənməkdə heç bir problem olmayıb və siz nə vaxt ondan istifadə edə biləcəksiniz veb saytlarınızı yaratmaq. Bu, gördüyünüz kimi, həcmcə olduqca kiçik, lakin praktiki baxımdan çox vacib idi. Tezliklə görüşənədək, proqramlaşdırma dillərini öyrənməkdə uğurlar!

JavaScript brauzerinizdə bloklanıb. Saytın işləməsi üçün JavaScript-i aktiv edin!

partlamaq

(PHP 3, PHP 4, PHP 5)

partlamaq- Massiv elementlərini sətirdə birləşdirir (massivi sətirə çevirir)

Təsvir

simli partlamaq(simli yapışqan, massiv parçaları)

Parçalar massivinin elementlərinin sətir təsvirlərini birləşdirərək, bitişik elementlər arasına yapışqan sətri daxil etməklə əldə edilən sətri qaytarır.

Nümunə 1: İstifadə nümunəsi partlatmaq()

Şərh: Tarixi səbəblərə görə funksiyalar partlatmaq() arqumentləri istənilən qaydada ötürə bilərsiniz, lakin funksiya ilə birləşmək üçün partlatmaq() sənədləşdirilmiş arqument sırasından istifadə edilməlidir.

Şərh: 4.3.0 versiyasından bəri, yapışqan funksiyası arqumenti partlatmaq() isteğe bağlıdır və defolt olaraq boş sətir (""). Geriyə doğru uyğunluq üçün həmişə hər iki arqumenti ötürmək tövsiyə olunur.

Şərh: Bu funksiya ikili formada məlumatları emal etmək üçün təhlükəsizdir.

Bu funksiya massiv elementlərinin dəyərlərini sətirdə birləşdirir. Massiv elementlərinin düymələrini birləşdirmək üçün aşağıdakı kodu istifadə edin:

php daxili massivlər üçün implode

Çoxölçülü massivi partlatmaq üçün ötürsəniz, siz "Array to string çevirmə" xətası alacaqsınız. Bu xətanın qarşısını almaq üçün implode funksiyasının aşağıdakı ekvivalentindən istifadə edin:

Funksiya multi_implode($glue, $array) ( $_array=array(); foreach($array as $val) $_array = is_array($val)? multi_implode($glue, $val) : $val; return implode($ yapışqan, $_array);

Həmçinin funksiya təsvirlərinə baxın

Məlumatların bir təmsildən digərinə çevrilməsi problemin həlli üçün məşhur, çox vaxt yeganə mexanizmdir. Massiv obyektin sadə halıdır. Sətir məlumatın ötürülməsi, işlənməsi və ya saxlanması üçün təbii təsviridir.

PHP-də həyata keçirilən təcrübə və semantika: massivlər, funksiyalar və sintaktik strukturlar məlumatın təqdim edildiyi kimi emalı üçün optimal həllər yaratmağa imkan verir.

Məlumat: simvollar, sətirlər və məlumatlar

"Təmiz" formada məlumat simvollar, nitqlər və ya siqnallar ardıcıllığıdır. Proqramlaşdırmada sətirlər, massivlər və obyektlər görünür - bunlar süni sətir konstruksiyalarının variantlarıdır. Rəqəmlər də sətirdir, lakin rəqəmlər simvol deyil.

PHP bir çox müxtəlif üsullarla sətri massivə çevirməyə imkan verir. Bunu "öz-özünə" edən iki xüsusi funksiya var:

  • $aArr = partlatmaq("x", "string");
  • $aStr = partlatmaq("y", $aArr).

Birinci funksiya "x" ayırıcı simvolunu tapır və ondan istifadə edərək "sətir" sətirini bölür. Yaranan massiv tam olaraq "x" simvolları arasında olan elementlərin (sətirlərin) sayını ehtiva edir. Ayırıcı simvol mütləq klassik olmaya bilər:

  • vergül;
  • nöqtə;
  • nöqtəli vergül.

Siz sətri alt sətir və ya simvolların xüsusi kombinasiyası ilə bölmək olar.

PHP-də sətir uzunluğu strlen(), massiv uzunluğu count()-dir. Birinci halda simvolların sayı, ikinci halda isə elementlərin sayı hesablanır. Məhdudlaşdırıcı simvol massiv elementlərinə daxil edilmədiyi üçün count() dəyəri çevrilmiş sətirdəki ayırıcıların sayına bərabər olacaq.

PHP tərs çevrilməsində massivlər ayırıcı simvolla çevrilir (boş ola bilər) və bütün məlumatlar (rəqəmlər və Boolean ifadələri) bir sətirdə birləşdirilir. Massivin elementi başqa massiv ola bilər, lakin proqramçı bu işi xüsusi olaraq idarə etməlidir. implode() funksiyası rekursivdən uzaqdır.

Bu misalda PHP massivlərinin elementləri arasında başqa massiv olmadığı müddətcə onları sətirə çevirməkdə problem yoxdur. Assosiativ elementlər çevrildikdə, əsas məlumatlar itirilir. Xüsusilə, "gavalı" və "şaftalı" elementləri açarlarından sıyrılacaq.

Məlumat ayırıcıları və açarları

Nöqtələri, vergülləri, iki nöqtəni və s. ayırıcı kimi qəbul etməyin. PHP-də sətri çevirərkən çoxölçülü massiv işləməyəcək və assosiativ indekslərin heç bir yeri olmayacaq.

Bir sətri ayırıcı ilə təhlil etmək həmişə sətirlər yaradır. Ancaq bu, orada dayanmaq üçün bir səbəb deyil. Bir sətri onun komponent elementlərinə təhlil etdikdən sonra davam edə bilərsiniz.

Məsələn, bir neçə cümlədən ibarət abzas (ayırıcı "." - nöqtə), bir cümlədə bir neçə ifadə (ayırıcı "," - vergül, ";" - nöqtəli vergül və "." - nöqtə), sözlərdən ibarət bir cümlə ( ayırıcı " " - boşluq, "," - vergül, ";" - nöqtəli vergül və "."

PHP-də bu sökülmə ilə çoxölçülü massiv asanlıqla əldə edilə bilər, lakin alqoritm çox çirkin olacaq: ayırıcıların sayı artır və cümlələrin, ifadələrin və sözlərin təkrarlanmasını təmin etmək üçün bitişik paraqraflar arasında əlaqənin olmaması təmin edilir.

Sətirləri təhlil etməklə siz dərhal rəqəmlərin ardıcıllığını rəqəmlərə, məntiqi dəyərləri isə doğru və yalana çevirə bilərsiniz. Amma bu xüsusilə, əsas məlumat hələ də görünməyəcək, çünki açar mənadır, avtomatik olaraq yalnız rəqəmsal indeks yaradıla bilər.

Kompleks ayırıcılar

PHP massivini sətirdə çap etmək çox vaxt kommunal məqsədlər üçün istifadə olunur. Konfiqurasiya faylı ənənəvi olaraq bərabərlik simvolu və ya adı dəyərdən ayıran iki nöqtə ilə sətir-sətir yazılır.

Bu həll yolu ilə PHP-də massivin çıxışı faylda həyata keçirilir, sətir bölgüsü avtomatik əldə edilir və əks tanınma ilə assosiativ massivlər asanlıqla əldə edilir.

Faylı oxumaqla proqramçı sətirləri alır və hər sətri "=" və ya ":" ilə qıraraq adı və dəyərini alır. Çox məşhur manipulyasiya, sadə əsasda XML notasiyasından istifadə etmək daha müasir olsa da, adlar və dəyərlərə əlavə olaraq, əlavə məlumatlar, məsələn, dəyişən atributlar saxlanıla və bərpa edilə bilər.

Paraqraflarla nümunədə (məsələn, lüğət yaratmaq üçün təbii mətn və ya məlumat nümunəsi yaratmaq üçün təhlilin nəticəsi) vacib olan sətri seriala çevirmək üçün xüsusi prosedur deyil, bütün paraqraflar üçün hərtərəfli həlldir. və ya məlumat blokları.

Tipik olaraq, belə bir tapşırıq əks həll tələb edir, o zaman yaradılan "məlumat toplusu" içindəki məlumatı axtarmaq və ya onu yenidən sətirdə toplamaq üçün istifadə etmək lazımdır.

Simlərin sökülməsi və yenidən yığılması - məlumatların yoxlanılması

PHP-də: seriallardan sətirə qədər dəqiq həll yoludur. Mənbə məlumatında sintaksis xətaları, əlavə boşluqlar və ya yanlış simvollar ola bilərsə, təhlil zamanı onlar orada olmayacaq. Proqramlaşdırmanın yazılmamış qanunlarına uyğun olaraq ilkin məlumatların çevrilməsinin nəticəsi ciddi şəkildə formal şəkildə həyata keçirilir və nəticə rəflərdə aydın şəkildə yerləşdiriləcəkdir.

Əks prosedur düzgün mənbə sətirini yaradacaqdır. Mənbə məlumatının miqdarını və əks çevrilmənin nəticəsini müqayisə etsəniz, səhvlərin harada edildiyi və ya məlumat itkisinin baş verdiyi barədə nəticə çıxara bilərsiniz. PHP-də sətirin orijinal uzunluğu kontekstində massivin uzunluğu bizə lazımi nəticələr çıxarmağa imkan verə bilər.

Saat, tarix və hadisə etiketləri

Kritik layihələrin işlənib hazırlanmasında idarəetmə obyektləri, məsələn, vaxt və ya hadisələr yaradarkən, sıra verilənlərin bir təsviri, massiv isə başqadır. Lakin tətbiqdə onlar ekvivalentdir.

Riyazi və ya məntiqi hesablamaları yerinə yetirmək lazım olduqda, proqramçı məlumatların saxlanması lazım olduqda, simli versiyadan istifadə edir;

İndekslərə verilənlər bazası sahələrinə giriş - MySQL və PHP-nin birgə fəaliyyətinin real təcrübəsi, sıradakı massivlər = bir neçə verilənlər bazası cədvəlinin sətirlərində bir indeks. Verilənlər bazasında onlarla cədvəl varsa və hər bir cədvəldə sətirlər müəyyən kombinasiyada adların (dəyərlərin) birləşməsi ilə seçilə bilərsə, cərgə giriş massivləri yaratdıqdan sonra indeks yaratma alqoritmindən istifadə edərək onlara daxil ola bilərsiniz, və verilənlər bazasında axtarış etməklə deyil.

Massivin sətirə çevrilməsi istənilən indeksin formalaşdırılması alqoritmi kimi qəbul edilə bilər, massivin məzmunu isə tamamilə fərqli hadisələrin və ya istifadəçi hərəkətlərinin nəzarəti altında formalaşır.

Massivlərin Birləşdirilməsi

PHP funksiyaları massivləri sərbəst manipulyasiya etməyə imkan verir. Ancaq unikal məlumatları seçmək və ya massivdə məlumatları tapmaq üçün həmişə problemlər yaranır.

Birinci problem iterativ şəkildə həll olunur: massiv (və ya bir neçə massiv) təkrarlanır və unikal dəyərlər silsiləsi əmələ gəlir - aşkar bir həll, lakin ən təsirli deyil.

Massivdə məlumatların tapılması da bir dövrdür və çoxlu elementlər varsa, dövr kifayət qədər uzun olacaq və nəzərəçarpacaq vaxt tələb edəcəkdir. İstədiyiniz elementin baş verməsini tapmaq üçün strpos() funksiyasından istifadə edərək sətirə massiv göndərmək mümkündür, lakin bu, səhv baş verənin aşkarlanması problemini ortaya çıxaracaq.

Məsələn, “qab” sözü axtarılıb, “çəkic” sözündə onun işlənməsi tapılıb. Massivin bütün elementləri xüsusi ayırıcıdan istifadə edərək sətirdə birləşdirilərsə, qeyri-müəyyənlikdən qaçınsa, belə səhvlərdən qurtula bilərsiniz.

Əgər sətirdə “[tray]” və “[çəkic]” varsa, axtarışda heç bir problem olmayacaq.

Lakin real həcmdə məlumatlarda strpos() funksiyasının massiv elementləri üzərində təkrarlanan dövrədən daha sürətli işləyəcəyinə heç bir zəmanət yoxdur.

Ən yaxşı həll massiv və ya sətirin özbaşına düzgün işi görməsidir. Əgər biz massivləri bir qədər mürəkkəbləşdirsək və sətirləri sadələşdirsək, çünki birincilər obyektin xüsusi halıdır, ikincisi isə ənənəvi seriallaşdırmadır, onda hər kəs öz işi ilə məşğul olacaq.

Doğru zamanda, obyekt bir massivdir və bir sətir lazım olduqda, bir sətir olacaqdır. Bu halda obyektdə eyni zamanda həm massivin, həm də sətirin olması qətiyyən vacib deyil. Siz sürətli çıxışla unikal məlumat strukturu qura bilərsiniz. Və “massiv” və “sətir” məntiqini obyekt metodlarına qoyun.

Obyekt yönümlü yanaşma sətir məlumatlarının emalı ilə bağlı bir çox problemlərin həllini asanlaşdırır, diqqəti massivlərə, döngələrə və PHP-nin özünün sətir emal funksiyasına yönəltməkdən yayınmağa imkan verir.

Həm sətirlər, həm də massivlər reallığın, tətbiqin, tapşırığın əsl mənasıdır. Belə bir vəzifə yoxdur - PHP-də sətirlərə massivlərin göndərilməsi. Ancaq əvvəlki alqoritmdə əldə edilən nəticələrə əsasən abzas (cümlə, söz, söz, rəqəm...) əldə etmək vəzifəsi var.

Əvvəlki alqoritm bir məna daşıyır və bu mənanın dəqiq ifadəsi massivdə var. Alqoritmin növbəti mərhələsi mənanın sonrakı emal və ya tətbiq üçün əlverişli olan başqa bir təsvirə çevrilməsidir.

Alqoritmə verilənlərin məna və transformasiya dinamikası kimi baxmaqla etibarlı, başa düşülən və effektiv çevrilmələr formalaşdırmaq mümkündür.

Əgər PHP massivini sətirə çevirmək lazımdırsa, bunun üçün bir neçə alət var. Müəyyən bir vasitənin istifadəsi məqsədlərinizdən asılıdır.

1. Implode() funksiyası

Onun köməyi ilə siz istənilən ayırıcı vasitəsilə massiv elementlərini simli “yapışdıra” bilərsiniz. Daha çox oxuyun: implode
Misal:

Echo implode("|", massiv(1, 2, 3)); // xətti istehsal edəcək: 1|2|3

Bu funksiyanın partladılması () antaqonisti var, o, əksinə, ayırıcıdakı sətri massiv elementlərinə bölür. Daha çox oxuyun: partlayın

2. Serialize() funksiyası

Funksiyanın əsas vəzifəsi dəyişəni (bizim vəziyyətimizdə massivi) saxlama üçün uyğun vəziyyətə çevirməkdir.
Massivi sətirdə saxlamaq və sonra onu yenidən massiləyə çevirmək üçün istifadə olunur. Siz massivi fayl və ya verilənlər bazasında saxlaya və sonra skripti növbəti dəfə işə saldığınız zaman onu bərpa edə bilərsiniz.
Daha çox oxuyun: seriallaşdırın

$array = massiv("1" =>; "elem 1", "2"=> "elem 2", "3" => "elem 3"); $string = serialize($massiv); echo $string; // xətti yaradacaq: a:3:(i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:"elem 3" ;)

Sonra bu sətirdən massivi yenidən əldə edə bilərsiniz:

$massiv = seriyadan çıxart($string);

3. json_encode() funksiyası

Verilənlərin JSON təqdimatını qaytarır. Bunun nə olduğunu oxuya bilərsiniz.
Bizim vəziyyətimizdə bu funksiya serializasiyaya bənzəyir, lakin JSON əsasən məlumatların ötürülməsi üçün istifadə olunur. Ön tərəfdə javascript ilə məlumat mübadiləsi üçün bu formatdan istifadə etməli olacaqsınız. Daha ətraflı: json_encode

$massiv = massiv(1 => "bir", 2 => "iki",); $json = json_encode($massiv); echo $json; // ("1":"bir","2":"iki")

Geri çağırış funksiyası json_decode() funksiyanın ikinci parametri yanlış olarsa, stdClass tipli obyekti qaytaracaq. Yaxud ikinci parametr kimi true ötürülürsə, assosiativ massiv qaytaracaq. Təfərrüatlar burada.

PHP müasir proqramlaşdırma dili kimi verilənləri emal etmək qabiliyyətini təmin edir, onların növü istifadə zamanı müəyyən edilə bilər. Proqramın icrası zamanı verilənlərin növü dəyişə bilər.

Simvol sətirləri digər növ məlumatların təbii olaraq ötürüldüyü yeganə məlumat növüdür, ona görə ki, hər hansı verilmiş verilənlər həmişə simvollar ardıcıllığıdır.

PHP-də massivlər

Normal dəyişənlərə əlavə olaraq, PHP proqramçıya massivlərlə işləmək üçün sintaksis və funksiyalar təqdim edir. Elementlərinə açarla çıxışı təmin edən adi massivlərə əlavə olaraq (0-dan elementlərin sayına qədər) siz assosiativ massivlərdən istifadə edə bilərsiniz. Sonuncuda, giriş həm rəqəmsal indeks (avtomatik olaraq təyin edilir), həm də proqramçı tərəfindən müəyyən edilmiş açarla həyata keçirilə bilər.

PHP indeksləri və dəyərləri dəyişdirmək imkanı verir, çünki açar rəsmi olaraq dəyərdən daha sərt deyil, lakin siz ondan ehtiyatla istifadə etməlisiniz. Uzun müddətdir ki, proqramlaşdırma ənənələri latın əlifbasının hərflərinə müraciət edir. Kiril, bir qayda olaraq, kodlaşdırma problemini özü ilə gətirir. Praktik və təhlükəsiz kod lazım olduqda dilin imkanlarından sui-istifadə etməməlisiniz.

Optimal indeks seçimi ingilis dilində mənalı bir ifadədir, tercihen boşluqlar olmadan. PHP sintaksisinin açarlar üçün "azadlıq" elan etməsi əladır, lakin öz təcrübənizə etibar edib təhlükəsiz koda diqqət yetirmək daha yaxşıdır.

PHP “arrays to string” həllinin ən maraqlı və praktik xüsusiyyəti ekvivalent qarşılıqlı çevrilmə imkanıdır.

PHP: Massivlər və sətirlər

PHP "massivlərdən sətirə" funksiyası: $cLine = implode("/ ", $aStyle) "/ " simvolu ilə ayrılmış $aStyle massivinin bütün elementlərinin simvol sətirini yaradır. Əgər " " göstərsəniz, bütün elementlər bir simvol ardıcıllığına birləşdiriləcək.

$aStyle = explode("/", $cLine) tərs funksiyası "/" simvolu ilə ayrılan bütün sətirlərdən ibarət massiv yaradır.

Explode() funksiyasından istifadə edərkən mənbə sətirində istədiyiniz ayırıcı simvolun olub olmadığını yoxlamaq məsləhətdir, lakin lazım deyil.

Siz həmçinin daha humanist və idarə olunan vasitələrdən istifadə edərək PHP-də massivlər çıxara bilərsiniz. və ya "." operatoru, nəticədə çevrilmə sətirlərinin formalaşmasına imkan verir (hər bir elementi emal edin).

PHP: Obyektlər vasitəsilə massivi sətirə çap edin

Obyekt verilənlər və kodlar toplusudur. Məsələn, kodunuza iki funksiya qoymağınıza heç nə mane olmur: yaz və oxu. Varislik və polimorfizm sayəsində bir dairə obyektiniz varsa, onun varyasyonlarına sahib ola bilərsiniz: mavi, qırmızı və yaşıl.

Hər biri fərqli şəkildə yazılacaq (oxunacaq), lakin PHP “arrays to string” həllinin tam olaraq necə icra edildiyinin əhəmiyyəti olmayacaq. Özündə obyektlər müəyyən məna daşıyır, müxtəlif strukturlara və müxtəlif üsullara malikdir. İki funksiyalı bir nümunə - xüsusi. PHP-də belə bir mexanizm qurarkən massivlər hər bir konkret halda fərqli şəkildə sətirdə yerləşdiriləcək.

Bu, çoxlu imkanlar açır. Bir obyektdə iki massiv, digərində iyirmi massiv var və ümumi əcdadın (adətən birincisi mücərrəddir) ümumiyyətlə heç nə yoxdur. Onların ümumi əcdad üsullarından istifadə etməklə, nəyinsə yazılmadığı, oxunmadığı, işlənilmədiyi və ya göstərilmədiyindən narahat olmaq lazım deyil.

Varislik sayəsində proqramın hər hansı bir yerində hansı formadan istifadə olunmasından asılı olmayaraq, o, sətir kimi təqdim oluna və həmin xüsusi formanın obyektinə geri qaytarıla bilər.