PHP: низи до низа. Конвертирање на низи во низи и обратно. PHP explode метод за разделување низа со три примери Разделување низа во низа php

Конвертирањето на податоци од едно во друго претставување е популарен, често единствениот механизам за решавање на проблем. Низа е едноставен случај на објект. Низа е природна претстава на информации за пренос, обработка или складирање.

Искуството и семантиката имплементирани во PHP: низите, функциите и синтаксичките структури овозможуваат создавање оптимални решенија за обработка на информациите како што се претставени.

Информации: знаци, низи и податоци

Во својата „чиста“ форма, информацијата е низа знаци, говор или низа сигнали. Низи, низи и објекти се појавуваат во програмирањето - ова се варијанти на вештачки конструкции на жици. Броевите се исто така низи, но броевите, а не симболите.

PHP ви овозможува да конвертирате низа во низа на многу различни начини. Постојат две специјални функции кои го прават тоа „сами“:

  • $aArr = експлодира ("x", "низа");
  • $aStr = имплодира ("y", $aArr).

Првата функција го наоѓа разграничувачкиот знак „x“ и ја дели низата „низа“ користејќи ја. Резултирачката низа го содржи точно бројот на елементи (линии) кои се содржани помеѓу знаците „x“. Симболот за одвојување можеби не мора да биде класичен:

  • запирка;
  • точка;
  • точка-запирка.

Може да поделите низа со подниза или со посебна комбинација на знаци.

Должината на низата е strlen() во PHP, должината на низата е count(). Во првиот случај, бројот на знаци се брои, во вториот случај, бројот на елементи. Бидејќи карактерот за разграничување не е вклучен во елементите на низата, вредноста на count() ќе биде еднаква на бројот на разграничувачи во конвертираната низа минус еден.

Во обратна трансформација на PHP, низите во стринг се претвораат со разграничувачки карактер (може да биде празен), и сите податоци (броеви и Булови изрази) се спојуваат во една низа. Елемент на низа може да биде друга низа, но програмерот мора конкретно да се справи со овој случај. Функцијата implode() е далеку од рекурзивна.

Во овој пример, нема проблем со конвертирање на PHP низи во низа се додека не постои друга низа меѓу нивните елементи. Кога асоцијативните елементи се конвертираат, клучните информации се губат. Поточно, на елементите „слива“ и „праска“ ќе им бидат одземени клучевите.

Разграничувачи на податоци и клучеви

Не сметајте ги точките, запирките, запирките и слично како разграничувачи. Кога се трансформира низа во PHP, повеќедимензионалната низа нема да работи, а асоцијативните индекси нема од каде да доаѓаат.

Парсирањето низа по разграничувач секогаш произведува низи. Но, ова не е причина да се запре тука. Имајќи разложено една линија во нејзините составни елементи, можете да продолжите понатаму.

На пример, имаше став со неколку реченици (сепаратор "." - точка), неколку фрази во реченицата (сепаратори "," - запирка, ";" - точка-запирка и "." - точка), фразата содржи зборови ( разграничувач " " - празно место, "," - запирка, ";" - точка-запирка и "."

Со ова расклопување во PHP, лесно може да се добие повеќедимензионална низа, но алгоритмот ќе биде многу грд: бројот на сепаратори се зголемува, а недостатокот на врска помеѓу соседните параграфи е загарантиран за да се обезбеди дуплирање на реченици, фрази и зборови.

Со парсирање на низи, можете веднаш да конвертирате низи од цифри во бројки, а логичките вредности во вистинити и неточни. Но, ова е особено, клучните информации сè уште нема да се појават, бидејќи клучот е значењето, само нумерички индекс може да се креира автоматски.

Комплексни сепаратори

Печатењето PHP низа во низа често се користи за корисни цели. Конфигурациската датотека традиционално се пишува линија по линија, со симбол за еднакви или две точки што го одделува името од вредноста.

Со ова решение излегувањето на низа во PHP се врши во датотека, автоматски се добива поделба на низи, а со обратно препознавање лесно се добиваат асоцијативни низи.

Со читање на датотеката, програмерот ги добива линиите, а со кршење на секоја линија со „=" или „:“, го добива името и неговата вредност. Многу популарна манипулација, иако е помодерно да се користи XML нотација од едноставна причина што покрај имињата и вредностите, може да се складираат и обновуваат дополнителни податоци, на пример, атрибути на променливи.

Во примерот со параграфи (на пример, природен текст за да се изгради речник или резултат од парсирање за да се создаде примерок од податоци), она што е важно не е специфичната процедура за претворање на низа во низа, туку сеопфатно решение за сите параграфи или блокови на информации.

Вообичаено, таквата задача ќе бара обратно решение, кога генерираниот „сет“ на податоци ќе треба да се користи за пребарување на информации во него или за нивно составување назад во низа.

Расклопување и повторно составување низи - валидација на податоци

Во PHP: низите до низата е точното решение. Ако изворната информација може да има синтаксни грешки, дополнителни празни места или неточни симболи, тогаш тие нема да бидат таму за време на парсирањето. Резултатот од трансформирањето на првичните информации според непишаните закони за програмирање се врши строго формално, а резултатот ќе биде јасно поставен на полиците.

Обратна постапка ќе ја произведе точната изворна низа. Ако ја споредите количината на изворните информации и резултатот од обратната трансформација, можете да извлечете заклучоци за тоа каде се направени грешки или се случило губење на податоци. Во PHP, должината на низата во контекст на оригиналната должина на низата може да ни овозможи да ги извлечеме потребните заклучоци.

Ознаки за време, датум и настани

Во развојот на критични проекти, кога се создаваат контролни објекти, на пример, време или настани, редот е една претстава на податоци, а низата е друга. Но, во примена тие се еквивалентни.

Кога е неопходно да се извршат математички или логички пресметки, програмерот манипулира со низата кога е неопходно да се складираат податоци, тој ја користи стринг верзијата;

Пристап до индексите до полињата на базата на податоци - вистинска практика на заедничко дејствување на MySQL и PHP, низи во ред = еден индекс на редовите на неколку табели на бази на податоци. Ако базата на податоци содржи десетина табели, а во секоја табела редовите можат да бидат избрани со комбинација на имиња (вредности) во одредена комбинација, тогаш со креирање низи за пристап до редови, последователно можете да имате пристап до нив користејќи алгоритам за формирање индекси, а не со пребарување во базата на податоци .

Претворањето низа во низа може да се смета како алгоритам за формирање на саканиот индекс, додека содржината на низата се формира под контрола на сосема различни настани или кориснички дејства.

Спојување низи

PHP функциите ви дозволуваат слободно да манипулирате со низи. Но, проблемите секогаш се појавуваат за да изберете единствени податоци или да најдете податоци во низа.

Првиот проблем се решава итеративно: низа (или неколку низи) се повторува и се формира низа уникатни вредности - очигледно решение, но не и најефективно.

Пронаоѓањето податоци во низа е исто така циклус, и ако има многу елементи, тогаш циклусот ќе биде доста долг и ќе потрае забележливо време. Можно е да се испрати низа до низа и да се користи функцијата strpos() за да се најде појава на саканиот елемент, но тоа ќе го воведе проблемот со откривање на погрешна појава.

На пример, зборот „послужавник“ се бараше, а неговото појавување беше пронајдено во зборот „чекан“. Можете да се ослободите од таквите грешки ако ги споите сите елементи на низата во низа користејќи специјален сепаратор, што ќе избегне двосмисленост.

Ако линијата содржи „[фиока]“ и „[чекан]“, тогаш нема да има проблеми со пребарувањето.

Но, не постои гаранција дека, на реални количини на податоци, функцијата strpos() ќе работи побрзо од јамката што се повторува преку елементите на низата.

Најдобро решение е низата или низата сами да ја направат вистинската работа. Ако донекаде ги комплицираме низите и ги поедноставиме низите, бидејќи првите се посебен случај на објект, а вторите се традиционална серијализација, тогаш секој ќе си го направи своето.

Во вистинско време, објектот е низа, а кога е потребна низа, таа ќе биде низа. Во овој случај, апсолутно не е неопходно да се има и низа и низа во објектот во исто време. Можете да изградите единствена структура на податоци со брз пристап. И ставете ја логиката „низа“ и „стринг“ во методите на објекти.

Објектно-ориентираниот пристап го поедноставува решавањето на многу проблеми за обработка на информации за низа, ви овозможува да избегнете фокусирање на низи, јамки и функцијата за обработка на низи на самиот PHP.

И низите и низите се вистинското значење на реалноста, апликацијата, задачата. Не постои таква задача - испраќање низи до низи во PHP. Но, има задача да се добие параграф (реченица, фраза, збор, број...) врз основа на резултатите добиени во претходниот алгоритам.

Претходниот алгоритам носи значење, а точниот израз на ова значење е содржан во низата. Следната фаза на алгоритмот е трансформација на значењето во друга претстава, погодна за понатамошна обработка или примена.

Со гледање на алгоритмот како динамика на значење и трансформација на податоците, можно е да се формираат сигурни, разбирливи и ефективни трансформации.

2,8 K

Методот PHP explode се користи за да се подели низа на одреден број на поднизи.

Синтакса на методот

Пример за користење на методот PHP explode:

$array_name = експлодира ($delimiter, $string_to_split, $no_of_breaks)

Пример за користење на експлозија за поделба на телефонски број

Во овој пример, деклариравме променлива низа и ѝ доделивме телефонски број во следниов формат:

001-234-567678

После тоа, го користевме методот на експлозија за да ја поделиме низата користејќи цртичка (цртичка) како разграничувач. Вратената низа низи е доделена на низата.

Потоа користевме јамка fogeach за да ги прикажеме вредностите на елементите на низата што се поднизи на телефонскиот број. Бидејќи параметарот за ограничување не е наведен, целиот телефонски број ќе се подели на три поднизи:


Погледнете демо и код

Пример со простор како разграничувач

Овој пример за прекин на линијата со експлозија на PHP користи празно место како разграничувач. На пример, да ја земеме оваа линија:

Примерот повторно не го користи лимитниот параметар. Откако ја креиравме низата, го користевме методот експлодира за да го разделиме. Потоа користевме јамка fogeach за да ги прикажеме вратените елементи на низата.

Конечно, ја користевме функцијата count() за да го прикажеме бројот на поднизи во низата:


Погледнете демо и код

Пример со лимитниот параметар

Ова е примерот опишан погоре, освен што овде го користевме лимитниот параметар за да го специфицираме бројот на поделби по линија. Подолу е линијата што се користеше:

Ова е експлодирано упатство кое овозможува поделба на низа во PHP.

Во примерот на PHP explode, кога користевме празно место како разграничувач, беа вратени само 10 поднизи. Овој пат, 5 поделби беа дефинирани со помош на лимитниот параметар:


Погледнете демо и код

Демо-страницата прикажува само пет поднизи, при што последната го вклучува остатокот од низата. Вкупниот број на елементи од низата е исто така 5, а не 10 како во примерот погоре.

За што се користи методот на експлозија?

метод експлодира ( PHP поделба) се користи за разделување на даден стринг. Да речеме дека веб-формуларот прифаќа телефонски број со земја и код на област во следниов формат:

001-234-567678

Треба да ги одвоиме кодот на земјата и областа, кои се одделени со цртичка. За да разделите телефонски број, можете да користите експлозија со разграничувач на цртичка (цртичка) откако ќе го прифатите бројот како влезен параметар.

Бидејќи explode враќа низа од поднизи, методот explode ќе го подели бројот на следната низа елементи:

  • Прв елемент = 001
  • Втор елемент = 234
  • Трет елемент = 567678

Како да се користи PHP експлодира функција

Постојат три параметри што можете да ги наведете во функцијата за експлозија на PHP. Последниот од нив е опционален, бидејќи се наведува бројот на партиции ( максимален број на поднизи) по избор.

Опис на секој параметар:

$array_name = експлодира ($delimiter, $string_to_split, $no_of_breaks)

  • $Array_name - низа; бидејќи методот explode враќа низа од низи добиени со разделување на низата;
  • $delimiter - го дефинира разграничувачот. Користивме „-“ како сепаратор за да го разбиеме телефонскиот број.

Можете исто така да користите празно место, запирки или други зборови како $разграничувач.

  • Следниот параметар е низата што треба да се подели со помош на методот експлодира. Ова може да биде низа променлива, клаузула итн.;
  • Последниот параметар го одредува максималниот број на поднизи или број на поделби по линија. Ова е изборен параметар.

Во експлодираната низа PHP, ако граничниот аргумент е позитивен, вратената низа ќе содржи максимален број елементи, а последниот елемент го содржи остатокот од низата.

Ако треба да конвертирате PHP низа во низа, постојат неколку алатки за ова. Употребата на одредена алатка зависи од вашите цели.

1. Функција Implode().

Со негова помош, можете да „залепите“ елементи од низата во низа, преку кој било сепаратор. Прочитај повеќе: имплодира
Пример:

Echo implode("|", низа(1, 2, 3)); // ќе ја произведе линијата: 1|2|3

Оваа функција има антагонист, explode(), кој, напротив, ја дели низата на разграничувачот на елементи на низа. Прочитај повеќе: експлодира

2. Функција Serialize().

Главната задача на функцијата е да трансформира променлива (во нашиот случај, низа) во состојба погодна за складирање.
Се користи за зачувување на низа во низа и потоа конвертирање назад во низа. Можете да ја зачувате низата во датотека или база на податоци, а потоа да ја вратите следниот пат кога ќе ја извршите скриптата.
Прочитајте повеќе: серијализирајте

$array = низа("1" =>; "елем 1", "2"=> "елем 2", "3" => "елем 3"); $string = serialize ($ низа); ехо $string; // ќе ја произведе линијата: a:3:(i:1;s:6:"елем 1";i:2;s:6:"елем 2";i:3;s:7:"елем 3" ;)

Потоа од оваа линија, можете повторно да ја добиете низата:

$ низа = unserialize ($string);

3. json_encode() функција

Враќа JSON претстава на податоците. Можете да прочитате што е тоа.
Во нашиот случај, оваа функција наликува на серијализација, но JSON главно се користи за пренос на податоци. Ќе мора да го користите овој формат за да разменувате податоци со Javascript на предниот крај. Повеќе детали: json_encode

$array = низа(1 => "еден", 2 => "два",); $json = json_encode ($ низа); ехо $json; // („1“:„еден“, „2“:„два“)

Функцијата за повратен повик json_decode() ќе врати објект од типот stdClass ако вториот параметар на функцијата е неточен. Или пак ќе врати асоцијативна низа ако точно се пренесе како втор параметар. Детали овде.

За да конвертирате низа во низа со разграничувач, можете да ја користите функцијата explode().
Потребни параметри: разграничувач и стринг.

// Пример 1 $pizza = "парче1 парче2 парче3 парче4 парче5 парче6"; $pieces = експлодира (" ", $пица); ехо $парчиња; // парче1 ехо $парчиња; // парче2 // Пример 2 $data = "foo:*:1023:1000::/home/foo:/bin/sh"; листа ($user, $pass, $uid, $gid, $gecos, $home, $shell) = експлодира (":", $податоци); ехо $ корисник; // foo echo $pass; // *

Поделете ја низата во низа користејќи регуларен израз

Ако explode() не е доволно, можете да користите помоќна функција: preg_split(). Ви овозможува да поделите низа не по фиксен сет на знаци, туку по

Пример од документацијата:

//поделете ја низата на произволен број запирки и знаци на празни места, //кои вклучуваат " ", \r, \t, \n и \f $keywords = preg_split("/[\s,]+/", " јазик на хипертекст, програмирање"); print_r ($ клучни зборови);

Резултат:

/* Низа ( => хипертекст => јазик => програмирање) */

Претворете ја низата во низа по број на знаци

Функцијата str_split() конвертира низа во низа, делејќи ја на елементи со одреден број знаци. Сакате да знаете како да го користите? Проверете ја документацијата.

$str = "Здраво пријателе"; $arr2 = str_split ($str, 3); print_r ($arr2)