Програмирање је синтакса и семантика.Први је одређен правилима језика, други - искуством програмера. Што се тиче низова, програмер може синтаксу подвргнути семантици. То још увек није објекат, али више није ни низ у традиционалном смислу. ПХП омогућава стварање низова од променљивих различитих врста, укључујући и њих саме. Елемент низа може бити функција, односно способност учитавања низа стварним алгоритмом, стварним значењем.
Синтакса је стабилна, али се мења од верзије доверзије и не морају увек бити компатибилне према горе. Преносивост програма добро је заборављено достигнуће прошлог века. Семантика се развија и увек се може применити не само у било којој верзији било ког језика; постала је традиција да се синтаксичким конструкцијама изражава оно што ни правила језика нису предвиђала. Користећи низове као пример, ово се може најједноставније разумети.
Конструисање низова
ПХП низови имају прикладну синтаксу и функционалност. Овај тип података може се описати унапред, али често је згодно створити низове у ходу по потреби.
јавни $ аНоне = арраи (); // низ је описан и не садржи ништа
јавни $ аФацт = низ ("авокадо", "бресква", "трешња"); // овај низ има три елемента
Стварање низа у процесу провере неког услова:
$ цСрцЛине = "рашчлањена линија података";
за ($ и = 0; $ и <13; $ и ++) {
$ цУсерЛине = инпутУсерЛине (); // унети нешто
иф (цхецкФунц ($ цСрцЛине, $ цУсерЛине) {
$ аРесулт [] = "Да"; // додавање у ПХП низ
} остало {
$ аРесулт [] = "Не";
}
}
Као резултат извршавања овог примера,низ од 13 елемената, чије ће вредности бити само низови „Да“ или „Не“. Елементи ће примати индексе од 0 до 12. Исти ефекат се може добити тако што се прво "ПХП" низ упише у низ:
$ цФутуреАрраи = "";
за ($ и = 0; $ и <13; $ и ++) {
$ цУсерЛине = инпутУсерЛине (); // унети нешто
иф ($ и> 0) {$ цФутуреАрраи. = "|"; }
иф (цхецкФунц ($ цСрцЛине, $ цУсерЛине) {$ цФутуреАрраи. = "Да";
} елсе {$ цФутуреАрраи. = "Не"; }
}
$ аРесулт = екплоде ("|", $ цФутуреАрраи);
Мултидимензионални низови
Многи системи за управљање веб локацијама (СМС)користите низове „на велики начин“. С једне стране, ово је добра пракса, с друге стране отежава пријаву. Чак и ако аутор разуме ПХП доктрину у низу, онда је не би требало злоупотребљавати: не само да ће програмер морати да се навикне на сложену нотацију. Често ће се после одређеног времена и сам стваралац дуго сећати шта је прво написао:
ретурн низ (
"виев_манагер" => низ (41, "темплате_патх_стацк" => низ (__ДИР__. "/../виев",),
"роутер" => арраи ("роутес" => арраи ("саихелло" => арраи (
"типе" => "ЗендМвцРоутерХттпЛитерал",
"оптионс" => арраи ("роуте" => "/ саихелло", "дефаулт" => низ (
"цонтроллер" => "ХелловорлдЦонтроллерИндек", "ацтион" => "индек",))))),
"цонтроллерс" => арраи ("инвокаблес" => арраи (
"ХелловорлдЦонтроллерИндек" => "ХелловорлдЦонтроллерИндекЦонтроллер"))
);
Ово је ПХП низ у Примеру примера низа од стране ЗФ2. У почетку није баш инспиративно, али делује и вероватно чини овај оквир успешним (пример из ЗендСкелетонАпплицатион / модуле / Хелловорлд / цонфиг / модуле.цонфиг.пхп модуле).
Низ је важна конструкција података токомдизајн и развој. Његова вишедимензионална верзија је некада била популарна, али временом остаје потреба за низима од највише две или три димензије. Ово је једноставније и јасније, али са професионалне тачке гледишта, када се нешто почне множити, то значи да нешто није у реду у исказу проблема или у коду.
Једноставно, приступачно и разумљиво
Стварањем у пхп-у низа у низу је најбољебити ограничена на два или три нивоа. Упркос стабилности и поузданости, ПХП прави грешке приликом обраде синтаксе. Можете то да поднесете, имајући добар уређивач кода, навикнут на тачно бројање заграда и зареза. Међутим, ПХП не контролише типове података (ово је карма савременог програмирања) и омогућава програмеру да вежба семантичке грешке.
Правило за контролу врста променљивих, илисопствене идеје претварања семантике у синтаксу често су неприхватљив луксуз. Ово је губитак брзине скрипте, читљивости кода, ... стога је једноставност кодирања увек битна.
ПХП има значајан недостатак:када постоји неизвесност, сценарио једноставно виси. Нису сви програм за отклањање грешака решени у непредвиђеним ситуацијама и много тога зависи од искуства и интуиције програмера. Што је алгоритам једноставнији, што су доступније структуриране информације, то је више шанси да се пронађе грешка или се уопште не призна.
Карактеристично је да када су се појавили први низови,предложене су варијанте података у облику структура - неспретан покушај стварања нечега од различитих врста података. Први су преживели и стекли нову ефективну синтаксу, док су други историја.
Једноставни и асоцијативни низови
Писање дводимензионалног низа је други парзаграде "[" и "]", на пример: $ аСрцДата [1] [2] значи упућивање на елемент [2] низа [1] који је укључен у низ $ аСрцДата. У ПХП-у не постоји захтев за декларацијом података унапред. Било која декларисана информација увек се може проверити да ли постоји.
Веома је ефикасно створити нешто само акокада је потребно, у облику у коме је било потребно, и да се уништи када потреба за њим нестане. Користећи разумна имена као кључеве (индексе), можете добити читљиве конструкције које су значајне у контексту тренутног места у алгоритму:
$ аАнкета ["наме"] = "Иванов";
$ аАнкета ["старост"] = 42;
$ аАнкета ["ворк"] = "Директор";
$ аАнкета ["активан"] = тачно;
$ аТабле [] = $ аАнкета;
$ аАнкета ["наме"] = "Петров";
$ аАнкета ["старост"] = 34;
$ аАнкета ["ворк"] = "Менаџер";
$ аАнкета ["активан"] = тачно;
$ аТабле [] = $ аАнкета;
$ аАнкета ["наме"] = "Афанасиев";
$ аАнкета ["старост"] = 28;
$ аАнкета ["ворк"] = "Радник";
$ аАнкета ["активно"] = нетачно;
$ аТабле [] = $ аАнкета;
$ сОне. = имплоде (";", $ аТабела [1]). "<бр/>"; // други ПХП низ у низ
$ сОне. = $ аТабле [1] [„посао“]; // приступ једном елементу другог низа
Резултат овог примера (први низ је нормалан, кључеви у њему почињу од 0, други низ је асоцијативан, има четири кључа: „име“, „старост“, „рад“, „активан“):
$ сОне = "Петров; 34; Менаџер; 1 <бр/> Менаџер";
У овом једноставном примеру можете видети какокреирани профил се може применити на све запослене. Можете створити низ запослених са индексима према бројевима особља, а ако вам је потребан одређени запосленик, изаберите га према броју особља.
Ако организација има одељења или их имасезонски радници, или треба да одвоје запослене пензионере ... ПХП низ у конструкцији низа је врло згодан, али никада не треба да се заносите димензионалношћу. Две или три димензије су граница за ефикасно решење.
Тастери за рад са низовима
Ако је пре било важно како ће све функционисати, ондаПоследњих година традиције бинарне ере, када је програмер желео да тачно зна како се чувају елементи низа и желео да им има директан приступ, биле су потпуно заборављене. Постоји много кодирања знакова која заузимају више од једног бајта у меморији. Реч „бит“ се сада може наћи само у операцијама претраживања битова, али претрага у ПХП пољу је посебна тема. Приступ елементима може бити једноставан и асоцијативан. У првом случају, елементи низа (који имају било који од типова доступних у ПХП-у) нумерисани су 0, 1, 2, ... У другом случају програмер наводи свој властити индекс, који се често назива „кључем“ за приступите жељеној вредности.
$ аЛине ["фруит"] = "поморанџа"; // овде ПХП кључ низа = "воће"
или (тако да је све тачно, посматрајући кодирање странице и кода):
$ аЛине [ицонв ("утф-8", "ЦП1251", "фруит")] = ицонв ("утф-8", "ЦП1251", "наранџаста");
Када додајете нову вредност у низ $ аЛине:
$ аЛине [] = ицонв ("утф-8", "ЦП1251", "бресква");
$ аЛине [ицонв ("утф-8", "ЦП1251", "поврће")] = ицонв ("утф-8", "ЦП1251", "краставац");
$ аЛине [] = ицонв ("утф-8", "ЦП1251", "патлиџан");
као резултат извршавања петље:
фореацх ($ аЛине као $ цк => $ цв) {
$ цОне. = $ цк. "=". $ цв. "<бр/>";
}
добиће:
воће = поморанџа
0 = бресква
поврће = краставац
1 = патлиџан
Приликом додавања елемената „бресква“ и „патлиџан“, ПХП-кључ низа се формира секвенцијално од 0, а при навођењу његове вредности биће једнак овој вредности.
Уклањање елемената из низа
Најлакши начин за уклањање елемента ПХП низа јеобрађујући га. У овом случају, на пример, као резултат извршавања петље, оригинални низ се скенира и формира нови, у који се непотребни елементи једноставно не уписују.
Можете то учинити лакше. Ако се применимо на последњи пример:
унсет ($ аЛине [0]); // уклања елемент из ПХП низа
онда ће резултат бити:
воће = поморанџа
поврће = краставац
1 = патлиџан
Опције за манипулисање елементима низамноги се могу конструисати. На пример, помоћу функција: имплоде () и екплоде (), можете ПХП низ уписати у низ са једним сепаратором и поново га рашчланити у други низ помоћу другог сепаратора.
Да бисте једноставно избрисали читав низ у ПХП-у, само напишите: унсет ($ аЛине);
То је довољно.
Претражите у низу
ПХП садржи посебне функције претраживањаарраи_кеис (), арраи_валуес (), арраи_кеи_екистс () и ин_арраи (), међутим, пре него што одлучите да их користите, размислите о томе да сами извршите ПХП претрагу низа.
Било који пројекат има одређено предметно подручје,конструисани низови, посебно када је део семантике пребачен у синтаксу и представљен скупом врло специфичних значајних кључева. То вам омогућава да обављате сопствене функције претраживања, које такође могу бити смислено означене.
У ПХП-у можете позивати функције чија су имена одређена током извршавања програма. Веома практичан пример из библиотеке ПХПВорд који вам омогућава читање и креирање МС Ворд докумената:
$ елементс = арраи ("Тект", "Инлине", "ТектРун", "Линк", "ПресервеТект", "ТектБреак",
"ЛистИтем", "ЛистИтемРун", "Табела", "Слика", "Објекат", "Фуснота",
„Ендноте“, „ЦхецкБок“, „ТектБок“, „Фиелд“, „Лине“);
$ функције = арраи ();
за ($ и = 0; $ и <цоунт ($ елементи); $ и ++) {
$ фунцтионс [$ и] = "додај". $ елементи [$ и];
}
Као резултат, низ функција $ примиће вредности низа $ елементс, односно имена стварних функција које изводе рад са стварним елементима документа.
Позивањем $ фунцтионс [4] за $ елементс [4] можете добити савршену претрагу и брзе резултате.
Сортирање предмета
Задатак сортирања података је од суштинског значаја иПХП нуди неколико функција за ово: сорт (), рсорт (), асорт (), ксорт (), ... Узлазни и силазни елементи, друге две функције чувају однос између кључева и вредности. Понекад има смисла насумично промешати вредности низа - схуффле ().
Када користите ПХП функције за сортирање, немојтезаборавите да елементи могу имати не само различите врсте, већ и не сасвим природни садржај. Пре свега, морате бити врло опрезни при сортирању низова који садрже руска слова, сортирању датума, као и бројевима који су написани у различитим форматима.
Најбољи начин да сами напишете савршено решење, бар током фазе тестирања скрипте, је ручно сортирање. Помоћи ће у предвиђању непредвиђених ситуација.
Уграђени низови
Захваљујући функцијама имплоде () и екплоде (), низможе се лако трансформисати у низ и примити назад. То вам омогућава да податке похраните у компактном облику и проширите их у прикладно стање по потреби.
Низ претворен у низ отвара нове могућности. На пример, задатак проналажења кључних речи у тексту захтева да се пронађено не додаје поново.
$ цСрцЛине = "Текстуални текст ЛистИтемРун ТектБок ЛистИтем ТектБок поље за потврду ЦхецкБок ТектБок Фуснота";
$ аСрц = експлодирај ("", $ цСрцЛине);
$ цДстЛине = "";
за ($ и = 0; $ и <цоунт ($ аСрц); $ и ++) {
$ цФинд = "[". $ аСрц [$ и]. "]";
иф (! ис_интегер (стрпос ($ цДстЛине, $ цФинд)))) {
$ цДстЛине. = $ цНађи;
}
}
$ аДст = експлодира ("] [", $ цДстЛине);
$ цОне = имплоде (";", $ аДст);
Као резултат, променљива $ цОне ће примити само оне вредности из оригиналног низа које се тамо једном појављују: „Тект; ЛистИтемРун; ТектБок; ЛистИтем; Цхецк; Бок; ЦхецкБок; Фоотноте“.
Руски језик у кључевима и вредностима
Не препоручује се употреба било чега повезаногса националним кодирањима, у синтаксичким конструкцијама. Руски језик, као и сви други језици чији знакови прелазе а-з, неће стварати проблеме јер се налази у подручју података, али не и у синтакси кода. Понекад ће чак и једноставан ПХП задатак „штампати низ на штампачу или на екрану“ довести до „кракозиабра“, а чешће ће само зауставити скрипту.
ПХП је лојалан језик и толерантан је према њемунационално кодирање, али има много ситуација када се завршена количина посла мора обављати више пута само зато што на правом месту и у право време искаче кључна вредност коју неће бити могуће препознати.
ПХП синтакса и језичко окружење
Имајте на уму да је ПХП синтакса једно, аликонструкти ове синтаксе „баве се“ другим апликацијама, оперативним системом и хардверским опцијама. Постоји много опција, никад није могуће све предвидети.
Правило је „у коду постоји само код, али на улазу,унутра, а на излазу су све информације “помоћи ће да се избегну неочекивана изненађења. Вредност ПХП у низу може бити „руска“, али кључ за то мора бити синтаксички тачан не само са становишта датог језика, већ и са становишта његовог окружења.