PHP implode: преобразуване на едномерни и многоизмерни масиви в редове, сортиране с помощта на цифрови индекси.

Популярността на php implode предполага нейната изключителна полезност и много предимства дори преди обичайното свързване на струни. Той осигурява достатъчна гъвкавост за кодиране и многостранно използване.

Характеристики на програмирането при използване на конкатенация на струни

Ако текстът е комбиниран с конкатенация, ние сме принудени да се адаптираме, когато пишем кода под стриктната последователност, с която този текст трябва да бъде събран. Нека да разгледаме един прост пример. Програмата ще помогне на мениджърите да вземат под внимание наличието на стоки в склада. Ако продуктът е над или почти приключи, ще се появи бутон "Поръчка". Свържете се с базата данни.

$ hostname = "localhost";
$ username = "root";
$ password = "";
$ dbname = "my_database";
$ usertable = "my_table";
$ yourfield = "продукт";

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

Съдържание на база данни:

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

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

Първо ще съберем формата, като използваме обичайната конкатенация на редовете:


$ form = ";
$ form. = '
'; 34)
if ($ result) {
while ($ row = mysqli_fetch_assoc ($ result)) {
$ form. = "
";
foreach ($ row като $ key_product = > $ value_product) {

ако ($ key_product> = 38) {
ако ($ value_product == 1) {
$ форма. = "

";
$ форма$ string ['id']. $ key_product. "'min =' 1 '. $ string [' id ']. $ string [' id ']. $ row [' id ']." _ ". $ key_product." style = 'ширина: 50px; фон: #ccc;' >

";
} else if ($ value_product == 0) {
$ form. = "Стил = 'ширина: 50px; фон: #bbb;'

";
} иначе {
$ форма. = "

";
}
} else {
$ форма. = $ Key_product. ::. $ Value_product.
";
}
}
$ form = "

";
}
}
echo $ form = =
“;

Такъв метод изисква строга последователност от записи, ако е необходимо да се замени един ред с друг, е необходимо да се пренапише кодът.

& lt; скрипт async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_2 - & gt;

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

В таблицата се вижда информация за продукта, получен от базата данни:

В тази форма е трудно да се определи кои стоки да се поръчват и продават, така че свързването не е подходящо за големи обеми информация.

Гъвкавост и многомерност на използването на функцията implode ()

Писане на низ в масив, а след това комбиниране с php implode, получаваме значително повече варианти за писане на кода.

Ще пренапишем нашия код: ще премахнем конкатенацията, вместо него ще се добавят редовете към масива и ще се съберат от функцията implode ():

$ form = ";
$ форма. 91) ';
if ($ result) {
докато ($ row = mysqli_fetch_assoc ($ result)) {
foreach ($ row като $ key_product = & gt; $ value_product) {
$ form_product [$ key_product] = ";

if ($ key_product & gt; = 38) {
if ($ value_product == 1) {
$ form_product [$ key_product] = " sale_" $ row [" id ']. $ key_product.' '& gt; Продавай.' $ row ['продукт']. ' - '. $ row [' model '].' - '. $ row [' color '].' - ". $ key_product.": ". $ value_product.

";
$ form_product [$ key_product] = "

";
} друго, ако ($ 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). '“;

Да предположим, че се нуждаем от друга отделна таблица за мениджърите, където клетките „Поръчка“ и „Продажба“ трябва да бъдат отделни. Благодарение на implode на php масива, можем да манипулираме низове. Добавете допълнителни масиви и създайте друга форма:


& lt; script type = "text /javascript" & gt;
може да blockSettings2 = {blockId: "R-A-70350-39", renderTo: "yandex_rtb_R-A-70350-39", async:! 0};
if (document.cookie.indexOf ("abmatch =")> = 0) blockSettings2.statId = 70350;
Функция (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (функция () {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)} (това, този.документ," yandexContextAsyncCallbacks ");
$ form_sklad = 'Състав';
$ sale = array ();
$ zakaz = масив ();
$ 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). "
';


Събираме същите линии във втората форма ($ form_sklad). "Поръчка" се поставя в масив$ zakaz и "sell" - в масива $ sale. Следователно, всяка единица от продукта или ще бъде в масива $ sale или $ zakaz. Единицата на стоките е една чифт обувки с определен размер (от 38 до 42). Един ред ($ row ['id'] в базата данни съдържа стоки от същия модел, но с различни размери, така че след това комбинираме с php implode всички единици на продукта от един модел в масиви $ form_row_zakaz и $ form_row_sale.Ако има един чифт обувки един размер, тогава такъв продукт ще се появи в масива $ zakaz (продуктът е над) и в масива $ sale (продава последната двойка от този размер).


& lt; script type = "text /javascript" & gt;
може да blockSettings3 = {blockId: "RA-70350-44", renderTo: "yandex_rtb_R-A-70350-44", async:! 0};
if (document.cookie.indexOf ("abmatch = ")> = 0) blockSettings3.statId = 70350;
! Функция (a, b, c, d, e) {a [c] = a [c] || [], a [c]. push (функция () {Ya.Context.AdvManager.render (blockSettings3) }), e = b.getElementsByTagName ("скрипт") , d = b.createElement ("скрипт"), d.type = "text /javascript", d.src = "//an.yandex.ru /system/context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (това, този документ," yandexContextAsyncCallbacks ");

По този начин няма нужда да се създава друг цикъл и да се пренаписват редове отново и отново.

Всичко това изглежда така:

$ form = ";
$ form_sklad = 'Композиция';
$ sale = array (); = array ();
$ form. = '
';
$ form_sklad. = '
“;
$ {{186} $ {{184}} $ {{184} {{ $ key_product] = $ zakaz [$ key_product] = $ form_product [$ key_product] = ";

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

";
$ zakaz [$ key_product] = $ form_product [$ key_product] =" име = 'поръчка _ ". $ Row [' id '] .'_'. $ Key_product. $ row ['id']. $ key_product. '' min = '1' style = 'ширина: 50px; фон: #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 =' ширина: 50px; фон: #bbb; ' & gt;

В резултат на това получаваме нова форма, в която стоките се поръчват отделно от продукта за продажба.

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

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

Можем да създаваме низове в произволен ред и след това, използвайки числени индекси на масив, да определим тяхната последователност. Следващият пример демонстрира това:

ако ($ key_product === "модел") {
$ product
= ''. $ Value_product. '';
} друго, ако ($ key_product === "продукт") {
$ product
= ''. $ Value_product. ''; {239}}
друго, ако ($ key_product === 'пол') {
ако ($ value_product === '1') {
$ продукт

= ' мъжки“;
} else {
$ продукт

= ' женски ';
}
} друго, ако ($ key_product === 'цвят') {
$ product
= ''. $ Value_product. '';
}
ksort ($ продукт);

В този пример линията се показва, както следва: "Мъжки обувки - Модел - Цвят." Ако промените индексите, тогава последователносттапродукцията ще се промени, с помощта на индексите е много лесно да се промени реда им.


& lt; script type = "text /javascript" & gt;
може да blockSettings = {blockId: "R-A-70350-45", renderTo: "yandex_rtb_R-A-70350-45", async:! 0};
if (document.cookie.indexOf ("abmatch =")> = 0) blockSettings.statId = 70350;
Функция (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (функция () {Ya.Context.AdvManager.render (blockSettings}), e = b.getElementsByTagName ("скрипт") , d = b.createElement ("скрипт"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (това, този.документ," yandexContextAsyncCallbacks ");

Съединяваме елементи от масива $ product с помощта на php implode

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

и след това да я покажат на страницата, където е необходима:

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

Сливане на стойностите на многомерни масиви в редове, използващи implode (), array_map () и array_column ()

За да получите редове на всяко място код, създаваме многоизмерен масив $ row_product:

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

Сега можем да наречем масива с array_map:

echo implode (',', array_map (функция ($ entry) {
$ shoes = array ($ entry
, $ entry

);
$ shoes_string = implode ('', $ shoes);
връщат $ shoes_string;
}, $ row_product));

Последният пример ще изведе всички модели обувки - мъжки или женски, можете също да покажете цвета и всички други стойности от масива $ product.

Ако трябва само да получите една стойност от $ row_product, можете да приложите функцията array_column:

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

По този начин функцията php implode осигурява достъп до много възможности на масив, които са полезни за извличане на данни и манипулиране на изходни низове, които ни освобождават от суровинатапоследователност от нишки на конкатенацията.

Пълен код:

$ hostname = "localhost";
$ username = "root";
$ password = "";
$ dbname = "my_database";
$ usertable = "my_table";
$ yourfield = "продукт";

$ 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. = '
“;
за ($ row като $ key_product = & gt; $ value_product) {
$ sale

if ($ result) {
докато {$ 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] ="

Свързани публикации