PHP implode: pretvorba enodimenzionalnih in večdimenzionalnih nizov v vrstice, razvrščanje z uporabo numeričnih indeksov.

Priljubljenost implodiranja php pomeni njeno izredno koristnost in številne prednosti še pred običajnim združevanjem nizov. Zagotavlja dovolj prožnosti za kodiranje in vsestransko uporabo.

Značilnosti programiranja pri uporabi združevanja nizov

Če je besedilo povezano z združevanjem, smo prisiljeni, da se pri pisanju kode prilagajamo strogemu zaporedju, s katerim je treba to besedilo zbrati. Poglejmo preprost primer. Program bo upravljavcem pomagal upoštevati razpoložljivost blaga v skladišču. Če je izdelek prekinjen ali skoraj končan, se bo prikazal gumb "Naročilo". Povežite se z bazo podatkov.

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

$ 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);

Vsebina baze podatkov:

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

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

Najprej bomo zbrali obliko z uporabo običajnega združevanja vrstic:


$ form = ";
$ form. = '
'; 34)
if ($ result) {
medtem ($ row = mysqli_fetch_assoc ($ result)) {
$ form. = "
";
foreach ($ row kot $ key_product = > $ value_product) {

če ($ key_product> = 38) {
če ($ value_product == 1) {
$ form. = "

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

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

";
} drugo {
$ oblika. = "

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

";
}
}
echo $ form = =
“;

Taka metoda zahteva strogo zaporedje zapisov, če je treba zamenjati eno vrstico z drugo, je treba kodo ponovno napisati.

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

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

V tabeli so prikazani podatki o izdelku, pridobljenem iz baze podatkov:

V tej obliki je težko ugotoviti, katero blago naročiti in prodati, zato združevanje ni primerno za velike količine informacij.

Fleksibilnost in večdimenzionalnost uporabe funkcije implode ()

Pisanje niza v matriko, ki jo nato združimo s php implodo, dobimo bistveno več različic pisanja kode.

Ponovno bomo napisali našo kodo: odstranili bomo združevanje, namesto da bi se vrstici dodali v polje in zbrali s funkcijo implode ():

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

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

";
$ form_product [$ key_product] = "

";
} else if ($ 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). '“;

Recimo, da potrebujemo še eno ločeno tabelo za upravljavce, kjer bi morale biti celice "Naročilo" in "Prodaja" ločene. Zahvaljujoč implodiranju niza php lahko manipuliramo z nizi. Dodajte dodatne matrike in ustvarite drugo obliko:


& lt; script type = "text /javascript" & gt;
lahko blockSettings2 = {blockId: "R-A-70350-39", renderTo: "yandex_rtb_R-A-70350-39", async:! 0};
if (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)} (ta, ta.dokument," yandexContextAsyncCallbacks ");
$ form_sklad = 'Sestava';
$ 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 (", $ sale);

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


Zbiramo iste vrstice v drugi obliki ($ form_sklad). "Vrstni red" je uvrščen v polje$ zakaz in "prodati" - v polju $ sale. Zato bo vsaka enota izdelka bodisi v polju $ sale ali $ zakaz. Enota blaga je en par čevljev določene velikosti (od 38 do 42). Ena vrstica ($ row ['id'] v bazi podatkov vsebuje blago istega modela, vendar različnih velikosti, zato združimo s php implode vse enote izdelka enega modela v nizih $ form_row_zakaz in $ form_row_sale.Če obstaja en par čevljev en velikost, se bo tak izdelek pojavil v nizu $ zakaz (izdelek je konec) in v polju $ sale (prodati zadnji par te velikosti).


& lt; script type = "text /javascript" & gt;
lahko 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 ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex.ru /system/context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ta, ta.dokument," yandexContextAsyncCallbacks ");

Zato ni treba ustvariti novega cikla in znova in znova prepisati vrstice.

Vse to izgleda tako:

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

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

";
$ zakaz [$ key_product] = $ form_product [$ key_product] =" ime = 'naročilo _ ". $ Row [' id '] .'_'. $ Key_product. '' id = 'zakaz _'. $ row ['id']. $ key_product. '' min = '1' style = 'širina: 50px; ozadje: #ccc; ' & gt;



} else if ($ value_product == 0) {
$ zakaz [$ key_product] = $ form_product [$ key_product] = "type = 'number' name = 'zakaz_' $ row ['id'] .'_ '. $ key_product.' 'id =' zakaz _ '. $ row [' id ']. $ key_product.' 'min =' 1 'style =' širina: 50px; ozadje: #bbb; ' & gt;

Zato dobimo novo obliko, v kateri se blago naroči ločeno od izdelka za prodajo.

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

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

Stvari lahko ustvarimo v poljubnem vrstnem redu in nato z uporabo numeričnih indeksov matrike določimo njihovo zaporedje. Naslednji primer to kaže:

če ($ key_product === "model") {
$ product
= ''. $ Value_product. '';
} else if ($ key_product === "product") {
$ product
= ''. $ Value_product. ''; {239}}
drugje, če ($ key_product === 'spol') {
če ($ value_product === '1') {
$ product

= ' moški“;
} drugo {
$ product

= ' samica ';
}
} else if ($ key_product === 'color') {
$ product
= ''. $ Value_product. '“;
}
ksort ($ product);

V tem primeru je vrstica prikazana takole: "Moški čevlji - Model - Barva." Če spremenite indekse, potem zaporedjeproizvodnja se bo spremenila, s pomočjo indeksov pa bo zelo enostavno spremeniti njihov vrstni red.


& lt; script type = "text /javascript" & gt;
lahko blockSettings = {blockId: "R-A-70350-45", renderTo: "yandex_rtb_R-A-70350-45", async:! 0};
if (document.cookie.indexOf ("abmatch ="))> = 0) blockSettings.statId = 70350; Funkcija (a, b, c, d, e) {a [c] = a [c] || [], [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings}), 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)} (ta, ta.dokument," yandexContextAsyncCallbacks ");

Združujemo elemente niza $ product s pomočjo php implode

$ form_row_product [$ row ['id']] = implode ('', $ product);

in ga nato prikaže na strani, kjer je potrebna:

echo $ form_row_product_string = implode ('
', $ form_row_product);

Vrednosti večdimenzionalnih nizov združimo v vrstice z uporabo implode (), array_map () in array_column ()

. kodo, izdelamo večdimenzionalni niz $ row_product:

$ row_product [$ row ['id']] = $ product;

Sedaj lahko pokličemo matriko z array_map:

echo implode (',', array_map (funkcija ($ entry) {
$ shoes = array ($ entry
, $ entry

);
$ shoes_string = implode ('', $ shoes),
vrnejo $ shoes_string;
}, $ row_product));

Zadnji primer bo prikazal vse modele čevljev - moške ali ženske, lahko pa tudi barvo in vse druge vrednosti iz polja $ product.

Če potrebujete samo eno vrednost iz $ row_product, lahko uporabite funkcijo array_column:

echo implode (", array_column ($ row_product, 3));

Funkcija implodiranja php omogoča dostop do številnih zmožnosti polja, ki so uporabne za pridobivanje podatkov in manipulacijo izhodnih nizov, ki nas osvobajajo ostregazaporedje povezovalnih nizov.

Celotna koda:

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

$ 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);
$ form = ";
$ sale = array ();
$ zakaz = array ();
$ product = array ()
$ row_product = array ();
$ form. = '
';
$ form_sklad. = '
“;
za ($ row kot $ key_product = & gt; $ value_product) {
$ sale

if ($ result) {
medtem ko {$ row = mysqli_fetch_assoc ($ result) $ key_product] = $ zakaz [$ key_product] = $ form_product [$ key_product] = "; ) $ sale [$ key_product] = $ form_product [$ key_product] = "

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

Sorodne publikacije

PHP iconv () - pretvorba za kodiranje znakov