PHP implode: konverze jednorozměrných a vícerozměrných polí do řádků, třídění pomocí číselných indexů.

Popularita php implode znamená její mimořádnou užitečnost a mnoho výhod ještě před obvyklým zřetězením řetězců. Poskytuje dostatečnou flexibilitu pro kódování a všestranné použití.

Funkce programování pomocí metody zřetězení

Je-li v textu jsou propojeny zřetězení, musíme se přizpůsobit při psaní kódu pod přísnou důslednost, s nimiž je text, který má být shromažďovány. Podívejme se na jednoduchý příklad. Tento program pomůže manažerům přihlížet k dostupnosti zboží ve skladu. Pokud je výrobek nad nebo téměř u konce, zobrazí se tlačítko "Objednávka". Připojte se k databázi.

$ hostname = "localhost";
$ username = "root";
$ heslo = "";
$ dbname = "my_database";
$ usertable = "my_table";
$ yourfield = "produkt";

$ con = mysqli_connect ($ název hostitele, $ username, $ heslo);
mysqli_select_db ($ con, $ dbname);
mysqli_set_charset ($ con, "utf8");

$ dotaz = "SELECT * FROM $ usertable";

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

databáze Obsah

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

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

Za prvé, shromažďovat formu běžnými zřetězení řetězců


$ tvoří = „;.
$ tvaru = '
';

, pokud (výsledek $) {
, přičemž ($ řada = mysqli_fetch_assoc (výsledek $)) {
$ formě. = "
"
foreach ($ řádek, jak $ key_product = & gt; $ value_product) {

, pokud ($ key_product & gt; ".

"
$ form. = "Name = 'zakaz _". $ Row [' id ']. "_". $ Key_product. "' Id = 'zakaz _". $ Row [' id ']. $ Key_product. „' Min = '1' styl = 'šířka: 50px; pozadí: #ccc;' & Gt;

„;
} else if ($ value_product == 0) {
$ forma = „Styl = 'šířka: 50 pixelů; pozadí: #bbb;'. & Gt;

„;
} else {
$ forma = "

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

";
}
}
echo $ form = =
";

Tato metoda vyžaduje dodržování přísného vstupním pořadí v případě potřeby nahradit jeden řádek do druhého, musíte přepsat kód.

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

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

V tabulce vidíme informace o produktu obdržené z databáze

V této formě je obtížné zjistit, co výrobek na zakázku, a které se prodávají, protože zřetězení není vhodný pro velké množství informací.

Pružnost a Multivariate funkce implodovala ()

Psaní pole řetězců a jejich kombinování pomocí php implodovat, dostaneme mnohem více možností, jak psát kód.

přepsat náš kód: odebrat zřetězení místo její linie budou zahrnuty v matici a obsahuje funkce implozi ().

$ forma = „,
$ form =‚
‚;
, pokud (výsledek $) {
, přičemž ($ řada = mysqli_fetch_assoc (výsledek $)) {
foreach ($ řádek, jak $ key_product = & gt; $ value_product) {
$ form_product [$ key_product] = ";

, pokud ($ key_product větší nebo rovno 38) {
, pokud ($ value_product == 1) {
$ form_product [$ key_product] = ".‚Prodej _" $ řádek [' id '] $ key_product. „' & gt; Prodej" $ řádek ['produkt']. '. - '. $ řádek [' model '].' - '. $ řádek [' barva '].' -‘. $ Key_product. ':' $ Value_product "

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

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

.";.
} jinak {
$ form_product [$ key_product] = "

.";.
}
} else {
$ form_product [$ key_product] = $ key_product ":" $ Value_product "
.";..
}
$ form_row [$ řádek ['id']] = implodují ("$ form_product),
}
}
}
echo $ tvar = implozi (." , $ form_row). "
";

Předpokládejme, že je třeba další samostatnou tabulku pro manažery, kde buňky „řádu“ a „prodej“ by měly být odděleny. Díky phpl array implode můžeme manipulovat s řetězci. Přidat další pole a vytvořit jinou formu:

,
, & lt; script type = "text /javascript" & gt;
var blockSettings2 = {blockId: "R-A-70350 - 39", renderTo "yandex_rtb_R-A-70350 - 39", async :! 0};
, pokud (document.cookie.indexOf ("abmatch =") větší nebo rovno 0) blockSettings2.statId = 70350;
! Funkce (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkce () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("scénář") , d = b.createElement ("scénář"), 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 = 'Složení';
$ prodej = array ();
$ zakaz = array ();
$ form_sklad. = '
';

$ prodej [$ key_product] = $ form_product [$ key_product] = "

.";.

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

.";.

$ form_row_zakaz [$ řádek ['id']] = implodují ("$ zakaz),
$ form_row_sale [$ řádek ['id']] = implodují (", $ prodej);

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


shromažďuje stejné řádky v druhé formě ($ form_sklad). "Order" je umístěn v poli$ zakaz a "sell" - v poli prodeje $. V důsledku toho bude každá jednotka produktu buď v prodejním poli $ nebo $ zakaz. Jednotkou zboží je jedna dvojice obuvi o určité velikosti (od 38 do 42). One series ($ row [‚id‘] databáze obsahuje zboží stejného modelu, ale různé velikosti, takže pak spojit pomocí php implodovat všechny jednotkovou cenu jednoho modelu do pole $ form_row_zakaz a form_row_sale $. Jestliže tam byl jeden pár bot jedna velikost, pak se produkt bude stejně jako v poli $ zakaz (produkt končí) a pole $ prodeje (prodáván poslední dvojice velikosti)


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

Není tedy třeba vytvářet další cyklus a přepisovat linky znovu a znovu.

všechny dohromady, je následující:

$ forma = „
$ form_sklad = 'struktura',
$ prodej = array (),
$ zakaz = array ();.
$ form = '
.';
$ form_sklad = ‚
";
$ {{186} $ {{184}} $ {{184} {{ $ key_product] = $ zakaz [$ key_product] = $ form_product [$ key_product] = „,
,
, pokud ($ key_product větší nebo rovno 38) {
, pokud ($ value_product == 1) {(190 ) $ prodej [$ key_product] = $ form_product [$ key_product] = "

"
$ zakaz [$ key_product] = $ form_product [$ key_product] =" name = '_ zakaz“$ Row. [' Id '] .'_' $ Key_product.. . " 'id =' zakaz _" $ řádek ['id'] $ key_product " 'min =' 1 'style ='. šířka: 50 pixelů; pozadí: #ccc; ' & gt;

"
,
} else if ($ value_product == 0) {
$ zakaz [$ key_product] = $ form_product [$ key_product] =" type = 'číslo' name = ‚zakaz_" . $ řádek ['id'] .'_.‘. $ key_product„‘id = 'zakaz _ "$ řádek [' id '].. $ key_product"' min = '1' style = 'šířka: 50 pixelů; pozadí: #bbb; " & gt;

Výsledkem je nová forma, kde se zboží objednat odděleně od zboží k prodeji

. & Lt; skript async =„//pagead2.googlesyndication.com/pagead/js

& scripts & gt; (adsbygoogle = window.adsbygoogle || [])

Můžeme vytvářet řetězce v libovolném pořadí a poté pomocí číselných indexů pole určit jejich sekvenci. Následující příklad ukazuje tento:.

, pokud ($ key_product === "vzor") {
$ produktu
= '' $ Value_product ".";
} else if ($ key_product === "produkt") {
$ product
= ''. $ Value_product. '";
}
else if ($ key_product === 'pohlavími') {
, pokud ($ value_product === '1') {
$ produktu

= ‚ muži";
} else {
$ product

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

V tomto příkladu je linka vypočte takto: "Man - boty - model, - barva" Pokud změníte indexy, pak postupnostVýstup změna indexů je velmi snadná změna pořadí.


& lt; script type = "text /javascript" & gt;
var blockSettings = {blockId: "R-A-70350-45", renderTo: "yandex_rtb_R-A-70350-45", asynchronní :! 0};
, pokud (document.cookie.indexOf ("abmatch =") větší nebo rovno 0) blockSettings.statId = 70350;
! Funkce (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkce () {Ya.Context.AdvManager.render (blockSettings)}), e = b.getElementsByTagName ("scénář") , d = b.createElement ("scénář"), d.type = "text /javascript", d.src = „//an.yandex .ru /systém /context.js "d.async = 0e.parentNode.insertBefore (d, e)} (to, this.document,!" yandexContextAsyncCallbacks „);

v sobě spojuje prvky pole $ produktu pomocí php implodovat

$ form_row_product [$ řádek ['id']] = implodují ('', $ produkt);

, a pak odvodit stránku, na které je potřeba:

echo $ form_row_product_string = implodují ('
', $ form_row_product);

Kombinace hodnoty vícerozměrná pole v řádcích pomocí zhroutí (), () a array_map array_column ()

pro všechny řádky v každém místě kód, vytvořit multidimenzionální pole $ row_product:

$ row_product [$ řádek ['id']] = $ produkt;

Nyní může způsobit, že hodnota pole pomocí array_map:

echo implozi ('', array_map (funkce (vstupní $) {
$ boty = array (vstup $
, vstup $

),
$ shoes_string = implodují ('', $ boty),
vratné $ shoes_string
}, $ row_product));

Poslední příklad vytiskne všechny boty - muži nebo ženy, může také přinést barvu a všechny ostatní hodnoty z pole $ produktu.

Pokud máte jen jednu hodnotu $ row_product, můžete použít funkci array_column:

echo implozi (“, array_column ($ row_product, 3));

Tudíž funkce php implodovala poskytuje přístup k mnoha příležitostem na polích, což je užitečné pro manipulaci s daty a výstupních linek, které nás osvobodí od krutýsekvence řetězců zřetězení.

všechny kód:

$ hostname = "localhost";
$ username = "root";
$ heslo = "";
$ dbname = "my_database";
$ usertable = "my_table";
$ yourfield = "produkt";

$ con = mysqli_connect ($ název hostitele, $ username, $ heslo);
mysqli_select_db ($ con, $ dbname);
mysqli_set_charset ($ con, "utf8");

$ dotaz = "SELECT * FROM $ usertable";

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

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

, pokud (výsledek $) {
, přičemž ($ řada = mysqli_fetch_assoc (výsledek $)) {
foreach ($ řádek jako $ key_product = & gt; $ value_product) {
$ prodej [$ key_product] = $ zakaz [$ key_product] = $ form_product [$ key_product] = „,
,
, pokud ($ key_product větší nebo rovno 38) {
, pokud ($ value_product == 1) {(322 ) $ prodej [$ 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 {
$ prodej [$ key_product] = $ form_product [$ key_product] ="

"
}
} else {
, pokud ($ key_product ===" vzor „) {
$ produkt
= '' $ value_product. '';
} else if ($ key_product === "produkt") {
$ produkt
=''$ Value_product..'';
}
else if ($ key_product ===' pohlaví ') {
, pokud ($ value_product ===' 1 ') {
$ produktu

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

='ženy‚;
}
} else if ($ key_product === 'barva') {
$ produkt
= ''. $ value_product. '';
}
$ row_product [$ řádek [' id ‚]] = $ produkt
$ form_product [$ key_product] = $ key_product.. ":" $ Value_product".
„,
$ form_row_product [$ řádek ['id']] = implodují ('', $ produkt);
$ form_row_zakaz [$ řádek ['id']]] = implode (", $ zakaz);
$ form_row_sale [$ řádek ['id']] = implodují ("$ prodej),
}
}
}
echo $ tvar = implozi. (", $ Form_row) ".
";
echo $ form_sklad. = Implodovat ("$ form_row_zakaz) .implode (" $ form_row_sale). " ';
echo $ form_row_product_string = implode ('
', $ form_row_product);

echo implodují ('', array_map (funkce (vstup $) {
$ obuv = array (vstup $
, vstup $

),
$ shoes_string = implodují ("$ boty),
vratné $ shoes_string
}, $ row_product));
echo $ array_column = implodují (", array_column ($ row_product, 3));

Související publikace