PHP implode: pretvaranje jednodimenzionalnih i višedimenzionalnih nizova u linije, sortiranje pomoću numeričkih indeksa.

Popularnost php implode podrazumijeva njegovu izvanrednu korisnost i mnoge prednosti čak i prije uobičajenog ulančavanja nizova. On pruža dovoljnu fleksibilnost za kodiranje i svestranu uporabu.

Značajke programiranja pri korištenju ulančavanja nizova

Ako se tekst kombinira s ulančavanjem, prisiljeni smo se prilagoditi prilikom pisanja koda pod strogim slijedom kojim se taj tekst treba prikupiti. Pogledajmo jednostavan primjer. Program će pomoći menadžerima da uzmu u obzir dostupnost robe u skladištu. Ako je proizvod gotovo ili gotovo gotov, pojavit će se gumb "Naruči". Povežite se s bazom podataka.

$ hostname = "localhost";
$ username = "root";
$ password = "";
$ dbname = "my_database";
$ usertable = "my_table";
$ yourfield = "proizvod";

$ con = mysqli_connect ($ hostname, $ username, $ password);
mysqli_select_db ($ con, $ dbname);
mysqli_set_charset ($ con, "utf8");

$ query = "SELECT * FROM $ usertable";

$ result = mysqli_query ($ con, $ query);
mysqli_close ($ con);

Sadržaj baze podataka:

& lt; skript async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_1 - & gt;

& lt; skripta & gt; (adsbygoogle = window.adsbygoogle || []). push ({});

Prvo, prikupit ćemo obrazac koristeći uobičajeno ulančavanje linija:


$ form = ";
$ form. = '
'; 34)
if ($ result) {
dok ($ row = mysqli_fetch_assoc ($ result)) {
$ form. = "
";
foreach ($ row kao $ key_product = & gt; $ value_product) {

if ($ key_product & gt; = 38) {
ako ($ value_product == 1) {
$ oblik. = "

";
$ oblik$ string ['id']. $ key_product. "'min =' 1 '. $ string [' id ']. $ string [' id ']. $ row [' id ']." _ ". $ key_product."' id = 'zakaz _ style = 'širina: 50px; pozadina: #ccc;' & gt;

";
} else if ($ value_product == 0) {
$ form. = "Stil = 'širina: 50px; pozadina: #bbb;' & gt;

";
} drugo {
$ oblik. = "

";
}
} drugo {
$ oblik. = $ Key_product. ::. $ Value_product.
";
}
}
$ form = "

";
}
}
echo $ form = =
';

Za takvu metodu je potreban strog slijed zapisa, ako je potrebno zamijeniti jedan red s drugim, potrebno je prepisati kod.

& lt; skript async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_2 - & gt;

& lt; skripta & gt; (adsbygoogle = window.adsbygoogle || []). push ({});

U tablici vidimo informacije o proizvodu dobivene iz baze podataka:

U ovom obliku teško je utvrditi koja roba naručiti i prodati, tako da ulančavanje nije prikladno za velike količine informacija.

Fleksibilnost i višedimenzionalnost korištenja funkcije implode ()

Pišući niz u nizu, a zatim ga kombinirajući s php implodom, dobivamo znatno više varijanti pisanja koda.

Ponovno ćemo napisati naš kod: uklonit ćemo ulančavanje, umjesto njega linije će biti dodane u polje i sakupljene pomoću funkcije implode ():

$ form = ";
$ form. 91) ';
if ($ result) {
dok ($ row = mysqli_fetch_assoc ($ result)) {
foreach ($ row kao $ key_product = & gt; $ value_product) {
$ form_product [$ key_product] = ";

if ($ key_product & gt; = 38) {
ako ($ value_product == 1) {
$ form_product [$ key_product] = " prodaja _" $ row [" id ']. $ key_product.' '& gt; Prodaj.' $ row ['proizvod']. ' - '. $ row [' model '].' - '. $ row [' color '].' - '. $ key_product.': '. $ value_product.

';
$ form_product [$ key_product] = "

";
} inače ako ($ value_product == 0) {
$ form_product [$ key_product] = "

";
} else {
$ form_product [$ key_product] = "

";
}
} else {
$ form_product [$ key_product] = $ key_product. ":". $ Value_product. "
";
}
$ form_row [$ row ['id']] = implode (", $ form_product);
}
}
}
echo $ form = implode (" , $ form_row). '';

Pretpostavimo da trebamo još jednu posebnu tablicu za menadžere u kojoj bi ćelije "Red" i "Sell" trebale biti odvojene. Zahvaljujući implodiranju php polja, možemo manipulirati nizovima. Dodajte dodatne nizove i stvorite drugi obrazac:


& lt; script type = "text /javascript" & gt;
može blockSettings2 = {blockId: "R-A-70350-39", renderTo: "yandex_rtb_R-A-70350-39", async: 0};
ako (document.cookie.indexOf ("abmatch ="))> 0) blockSettings2.statId = 70350;
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ovaj, ovaj.dokument," yandexContextAsyncCallbacks ");
$ form_sklad = 'Sastav';
$ sale = array ();
$ zakaz = array ();
$ form_sklad. = '
';

$ sale [$ key_product] = $ form_product [$ key_product] = "

";

$ zakaz [$ key_product] = $ form_product [$ key_product] = "

";

$ form_row_zakaz [$ row ['id']] = implode (", $ zakaz);
$ form_row_sale [$ row ['id']]] = implode (", $ prodaja);

echo $ form_sklad. = Implode (", $ form_row_zakaz) .implode (", $ form_row_sale). "
';


Skupljamo iste retke u drugom obliku ($ form_sklad). "Red" nalazi se u nizu$ zakaz, i "sell" - u polju $ sale. Prema tome, svaka jedinica proizvoda će se nalaziti u polju $ sale ili $ zakaz. Jedinica robe je jedan par cipela određene veličine (od 38 do 42). Jedan red ($ row ['id'] u bazi podataka sadrži proizvode istog modela, ali različitih veličina, tako da onda kombiniramo s php implode sve jedinice proizvoda jednog modela u nizovima $ form_row_zakaz i $ form_row_sale.Ako postoji jedan par cipela jedna veličina, tada će se takav proizvod pojaviti u nizu $ zakaz (proizvod je gotov) iu polju $ sale (prodati posljednji par ove veličine).


& lt; script type = "text /javascript" & gt;
može blockSettings3 = {blockId: "RA-70350-44", renderTo: "yandex_rtb_R-A-70350-44", async: 0};
if (document.cookie.indexOf ("abmatch") = ")> = 0) blockSettings3.statId = 70350;
! Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c]. push (funkcija () {Ya.Context.AdvManager.render (blockSettings3) }), e = b.getElementsByTagName ("skripta") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex.ru /system/context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ovo, ovaj.dokument," yandexContextAsyncCallbacks ");

Dakle, nema potrebe stvarati novi ciklus i ponovno pisati redove.

Sve izgleda ovako:

$ form = ";
$ form_sklad = 'Sastav';
$ sale = array (); = array ();
$ form. = '
';
$ form_sklad. ';
$ {{186} $ {{184}} $ {{184} {{ $ key_product] = $ zakaz [$ key_product] = $ form_product [$ key_product] = ";

ako ($ key_product & gt; = 38) {
ako ($ value_product == 1) {(190 ) $ sale [$ key_product] = $ form_product [$ key_product] = "

";
$ zakaz [$ key_product] = $ form_product [$ key_product] =" ime = 'narudžba ". $ Row [' id '] .'_'. $ Key_product. '' id = 'zakaz _'. $ row ['id']. $ key_product. '' min = '1' stil = 'širina: 50px; pozadina: #ccc; ' & gt;

Povezane publikacije