PHP implode: konvertovanie jednorozmerných a viacdimenzionálnych polí do riadkov, triedenie pomocou číselných indexov.

Obľúbenosť php implode naznačuje jeho mimoriadnu užitočnosť a mnohé výhody ešte pred zvyčajným zlučovaním reťazcov. Poskytuje dostatočnú flexibilitu pre kódovanie a všestranné použitie.

Funkcia programovanie pomocou metódy zreťazenie

Ak je v texte sú prepojené zreťazenie, musíme sa prispôsobiť pri písaní kódu pod prísnou dôslednosť, s ktorými je text, ktorý má byť zhromažďované. Pozrime sa na jednoduchý príklad. Program pomôže manažérom zohľadniť dostupnosť tovaru v sklade. Ak sa výrobok skončil alebo takmer skončil, zobrazí sa tlačidlo "Objednávka". Pripojte sa k databáze.

$ hostname = "localhost";
$ username = "root";
$ heslo = "";
$ dbname = "moja databáza";
$ usernametable = "my_table";
$ yourfield = "produkt";

$ con = mysqli_connect ($ názov hostiteľa, $ username, $ password);
mysqli_select_db ($ con, $ dbname);
mysqli_set_charset ($ con, "utf8");

$ query = "SELECT * FROM $ usertable";

$ výsledok = mysqli_query ($ con, $ query);
mysqli_close ($ con);

databázy Obsah

& lt; script async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
<- fb_336x280_1 ->

& lt; script & gt; (adsbygoogle = window.adsbygoogle || []) stlačte ({});

Po prvé, zhromažďovať formu bežnými zreťazenie reťazcov


$ tvoria = ";.
$ tvaru = '
';

, ak (výsledok $) {
, pričom ($ rad = mysqli_fetch_assoc (výsledok $)) {
$ forme. = "
"
foreach ($ riadok, ako $ key_product = & gt; $ value_product) {

, ak ($ ​​key_product & gt; ".

"
$ form. = "Name = 'zakaz _". $ Row [' id ']. "_". $ Key_product. "' Id = 'zakaz _". $ Row [' id ']. $ Key_product. "' Min = '1' style = 'šírka: 50px; background: #ccc;' & Gt;

";
} else if ($ value_product == 0) {
$ forma = "Štýl = 'šírka: 50 pixelov; pozadia: #bbb;'. & Gt;

";
} else {
$ forma = "

."; ....
}
} else {
$ forma = $ Key_product ":" $ Value_product "
", ....
}
}
$ form = "

";
}
}
echo $ form = =
";

Táto metóda vyžaduje dodržiavanie prísneho vstupným poradie v prípade potreby nahradiť jeden riadok do druhého, musíte prepísať kód.

& lt; script async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
<- fb_336x280_2 ->

& lt; script & gt; (adsbygoogle = window.adsbygoogle || []) stlačte ({});

V tabuľke vidíme informácie o produkte získanom z databázy:

V tejto forme je ťažké zistiť, čo výrobok na zákazku, a ktoré sa predávajú, pretože zreťazenie nie je vhodný pre veľké množstvo informácií.

Pružnosť a Multivariate funkcie implodovala ()

Písanie pole reťazcov a ich kombinovanie pomocou php implodovat, dostaneme oveľa viac možností, ako písať kód.

prepísať náš kód: odobrať zreťazenie namiesto jej línie budú zahrnuté v matici a obsahuje funkcie implózii ().

$ forma = ",
$ form =,
,;
, ak (výsledok $) {
, pričom ($ rad = mysqli_fetch_assoc (výsledok $)) {
foreach ($ riadok, ako $ key_product = & gt; $ value_product) {
$ form_product [$ key_product] = ";

, ak ($ ​​key_product väčšie alebo rovné 38) {
, ak ($ ​​value_product == 1) {
$ form_product [$ key_product] = "., Predaj _" $ riadok [' id ']. $ key_product.' '& gt; Predaj.' $ row ['product']. ' - '. $ riadok [' model '].' - '. $ riadok [' farba '].' - '. $ key_product.': '. $ value_product.

";
$ form_product [$ key_product] = "

";
} else if ($ value_product == 0) {
$ form_product [$ key_product] = ",

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

";
}
} else {
$ form_product [$ key_product] = $ key_product ":" $ Value_product "
."; ..
}
$ form_row [$ riadok ['id']] = implodujú ("$ form_product),
}
}
}
echo $ tvar = implózii (." , $ form_row). "
";

Predpokladajme, že potrebujeme inú samostatnú tabuľku pre manažérov, kde by bunky "Objednávka" a "Predať" mali byť oddelené. Vďaka phpl array implode môžeme manipulovať s reťazcami. Pridajte ďalšie polia a vytvorte iný formulár:


& script type = "text /javascript" & gt;
var blockSettings2 = {blockId: "R-A-70350 - 39", renderTo "yandex_rtb_R-A-70350 - 39", async:! 0};
ak (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings2.statId = 70350;
! Funkcie (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcia () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("scenár") , d = b.createElement ("scenár"), d.type = "text /javascript", d.src = "//an.yandex .ru /systém /context.js "d.async = 0e.parentNode.insertBefore (d, e)} (to, this.document ,!" yandexContextAsyncCallbacks ");
$ form_sklad = 'Zloženie';
$ predaj = array ();
$ zakaz = array ();
$ form_sklad. = '
';

$ predaj [$ key_product] = $ form_product [$ key_product] = "

";

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

";

$ form_row_zakaz [$ riadok ['id']] = implodujú ("$ zakaz),
$ form_row_sale [$ riadok ['id']] = implodujú (", $ predaj);

echo $ form_sklad. = Implodovat ("$ form_row_zakaz) .implode (" $ form_row_sale). "
";


V druhom formulári zhromažďujeme rovnaké riadky ($ form_sklad). "Order" sa umiestni do poľa$ zakaz a "sell" - v poli predaja $. V dôsledku toho bude každá jednotka produktu buď v predajnom poli $, alebo $ zakaz. Jednotkou tovaru je jeden pár topánok určitej veľkosti (od 38 do 42). One series ($ row [, id '] databáza obsahuje tovar rovnakého modelu, ale rôzne veľkosti, takže potom spojiť pomocou php implodovat všetky jednotkovú cenu jedného modelu do poľa $ form_row_zakaz a form_row_sale $. Ak tam bol jeden pár topánok jedna veľkosť, potom sa produkt bude rovnako ako v poli $ zakaz (produkt končí) a pole $ predaja (predávané posledná dvojica veľkosti)


. & lt; script type = "text /javascript" & gt;
var blockSettings3 = {blockId: "RA-70350-44", renderTo "yandex_rtb_R-a-70350 - 44", async:! 0},
, ak (document.cookie.indexOf ("abmatch = ") & gt ;! = 0) blockSettings3.statId = 70350,
, funkcia (a, b, c, d, e) {a [c] = a [c] || [], a [c]. push (funkcia () {Ya.Context.AdvManager.render (blockSettings3) }), E = b.getElementsByTagName ("scenár") , d = b.createElement ("scenár"), d.type = "text /javascript", d.src = "//an.yandex.ru /system/context.js",d.async=!0e.parentNode.insertBefore(d,e)}(this,this.document,"yandexContextAsyncCallbacks "),

Preto nie je potrebné vytvárať ďalší cyklus a prepísať čiary znova a znova.

všetky dohromady, je nasledujúci:

$ forma = "
$ form_sklad = 'štruktúra',
$ predaj = array (),
$ zakaz = array () ;.
$ form = '
.';
$ form_sklad =,
";
$ {{186} $ {{184}} $ {{184} {{ $ key_product] = $ zakaz [$ key_product] = $ form_product [$ key_product] = ",
,
, ak ($ ​​key_product väčšie alebo rovné 38) {
, ak ($ ​​value_product == 1) {(190 ) $ predaj [$ key_product] = $ form_product [$ key_product] = "

"
$ zakaz [$ key_product] = $ form_product [$ key_product] =" name = '_ zakaz "$ Row. [' Id '] .'_' $ Key_product .. . " 'id =' zakaz _" $ riadok ['id'] $ key_product " 'min =' 1 'style ='. šírka: 50 pixelov; pozadie: #ccc; ' & gt;

"
,
} else if ($ value_product == 0) {
$ zakaz [$ key_product] = $ form_product [$ key_product] =" type = 'číslo' name =, zakaz_ " . $ riadok ['id'] .'_. '. $ key_product "' id = 'zakaz _" $ riadok [' id '] .. $ key_product "' min = '1' style = 'šírka: 50 pixelov; pozadie: #bbb; ' & gt;

"
,
} else {
$ predaj [$ key_product] = $ form_product [$ key_product] =" name = 'predaj _ "$ riadok [.' Id" } $ '$' $ '$' $. $ '$' $. $ '$' $ \ '$ \ 50px; " & gt;

"
}
} else {
$ form_product [$ key_product] = $ key_product.": "$ Value_product .."
"
}
$ form_row [$ riadok ['id']] = implodujú (", $ form_product);
$ form_row_zakaz [$ riadok ['id']] = implodujú ("$ zakaz),
$ form_row_sale [$ riadok ['id']] = implodujú (", $ predaj);
}
}
}
echo $ form. = Implode (", $ form_row)."
';
echo $ form_sklad = implode ("$ form_row_zakaz) .implode (", $ form_row_sale) ..' ,

Výsledkom je nová forma, kde sa tovar objednať oddelene od tovar na predaj

. & Lt; skript async = "//pagead2.googlesyndication.com/pagead/js /adsbygoogle.js">,
,
, & lt; script & gt; (adsbygoogle = window.adsbygoogle || []) tlačiť ({}).

línie môžeme vytvoriť v ľubovoľnom poradí, a potom pomocou numerickej index poľa na určenie ich poradie. Nasledujúci príklad ukazuje tento :.

, ak ($ ​​key_product === "vzor") {
$ produktu
= '' $ Value_product ".";
} else if ($ key_product === "produkt") {
$ produkt
= ''. $ Value_product. '";
}
else if ($ key_product === 'pohlaviami') {
, ak ($ ​​value_product === '1') {
$ produktu

=,muži";
} iný {
$ produkt

= ' žena ';
}
} else if ($ key_product === 'farba') {
$ produkt
= ''. $ Value_product. '";
}
ksort ($ produkt);

V tomto príklade je riadok zobrazený nasledovne: "Pánske topánky - Model - Farba." Ak zmeníte indexy, potom postupnosťvýstup sa zmení, pomocou indexov je veľmi jednoduché zmeniť ich poradie.


pre všetky riadky v každom mieste kód, vytvoriť multidimenzionálne polia $ row_product:

$ row_product [$ riadok ['id']] = $ produkt;

Teraz môže spôsobiť, že hodnota poľa pomocou array_map:

echo implózii ('', array_map (funkcia (vstupné $) {
$ topánky = array (vstup $
, vstup $

),
$ shoes_string = implodujú ('', $ topánky),
vratné $ shoes_string
}, $ row_product));

Posledný príklad vytlačí všetky topánky - muži alebo ženy, môže tiež priniesť farbu a všetky ostatné hodnoty z poľa $ produktu.

Ak máte len jednu hodnotu $ row_product, môžete použiť funkciu array_column:

echo implózii (", array_column ($ row_product, 3));

Preto funkcie php implodovala poskytuje prístup k mnohým príležitostiam na poliach, čo je užitočné pre manipuláciu s dátami a výstupných liniek, ktoré nás oslobodí od krutýpostupnosť reťazcov zřetězenia.

všetky kód:

$ hostname = "localhost";
$ username = "root";
$ heslo = "";
$ dbname = "moja databáza";
$ usertable = "my_table";
$ yourfield = "produkt";

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

$ query = "SELECT * FROM $ usertable";

$ výsledok = mysqli_query ($ con, $ dotaz);
mysqli_close ($ con);

$ forma = "
$ form_sklad = 'Structure',
$ predaj = array (),
$ zakaz = array (),
$ produkt = array () ,
$ row_product = array (),
$ form = '
.';
$ form_sklad =,
.
";

, ak (výsledok $) {
, pričom ($ rad = mysqli_fetch_assoc (výsledok $)) {
foreach ($ riadok ako $ key_product = & gt; $ value_product) {
$ predaj [$ key_product] = $ zakaz [$ key_product] = $ form_product [$ key_product] = ",
,
, ak ($ ​​key_product väčšie alebo rovné 38) {
, ak ($ ​​value_product == 1) {(322 ) $ predaj [$ key_product] = $ form_product [$ key_product] = "

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

"
,
} else if ($ value_product == 0) {
$ zakaz [$ key_product] = $ form_product [$ key_product] ="

"
,
} else {
$ predaj [$ key_product] = $ form_product [$ key_product] ="

"
}
} else {
, ak ($ ​​key_product ===" vzor ") {
$ produkt
= '' $ value_product. '';
} else if ($ key_product === "produkt") {
$ produkt
=''$ Value_product ..'';
}
else if ($ key_product ===' pohlavia ') {
, ak ($ ​​value_product ===' 1 ') {
$ produktu

='mužov';
} else {
$ produktu

='ženy ,;
}
} else if ($ key_product === 'farba') {
$ produkt
= ''. $ value_product. '';
}
$ row_product [$ riadok [' id,]] = $ produkt
$ form_product [$ key_product] = $ key_product .. ":" $ Value_product ".
",
$ form_row_product [$ riadok ['id']] = implodujú ('', $ produkt);
$ form_row_zakaz [$ riadok ['id']]] = implode (", $ zakaz);
$ form_row_sale [$ riadok ['id']] = implodujú ("$ predaj),
}
}
}
echo $ tvar = implózii. (", $ Form_row) ".
";
echo $ form_sklad. = Implode (", $ form_row_zakaz) .implode (", $ form_row_sale). " ,;
echo $ form_row_product_string = implode ('
', $ form_row_product);

echo implodujú ('', array_map (funkcia (vstup $) {
$ obuv = array (vstup $
, vstup $

),
$ shoes_string = implodujú ("$ topánky),
vratné $ shoes_string
}, $ row_product));
echo $ array_column = implodujú (", array_column ($ row_product, 3));

Súvisiace publikácie