PHP: масив в масива. Търсене в масив от PHP
Програмирането е синтаксис и семантика. Първият се определя от правилата на езика, а вторият от опита на разработчика. По отношение на масивите разработчикът може обективно да зареди синтаксиса със семантика. Това не е обект, а не масив в традиционния смисъл. PHP прави възможно създаването на масиви от променливи от различни типове, включително самите тях. Елемент от масив може да бъде функция, т.е. способността да се зарежда масив с реален алгоритъм с реално значение.
съдържание
Синтаксисът е стабилен, но варира от версия до версия и не винаги може да бъде съвместим, дори от долната страна нагоре. Програми за преносимост - добре забравено постижение от миналия век. Семантиката се развива и винаги може да се прилага не само във всяка версия на който и да е език, стана традиция да се използват синтактични конструкции, за да се изрази фактът, че правилата на езика дори не са били предоставени. На примера на масиви това може да се разбира най-просто.
Изграждане на масиви
Масивът в PHP има удобен синтаксис и функционалност. това тип данни може да бъде описано предварително, но често е удобно да се създават масиви при необходимост.
public $ aNone = масив () - // масивът е описан и не съдържа нищо
публичен $ aFact = масив ("авокадо", "праскова", "череша") - // в този масив има три елемента
Създаване на масив при проверка на състояние:
$ cSrcLine = `низ от анализирани данни`;
за ($ i = 0- $ i<13 - $ i ++) {
$ cUserLine = inputUserLine () - // въведете нещо
ако (checkFunc ($ cSrcLine, $ cUserLine) {
$ aResult [] = `Да` - // добавете към PHP масива
} else {
$ aResult [] = `Не`;
}
}
В резултат на изпълнението на този пример ще бъде създаден масив от 13 елемента, чиито стойности ще бъдат само линиите "Да" или "Не". Елементите ще получат индекси от 0 до 12. Същият ефект може да се получи и като се напише "бъдещ" PHP масив на низ:
$ cFutureArray = ``;
за ($ i = 0- $ i<13 - $ i ++) {
$ cUserLine = inputUserLine () - // въведете нещо
ако ($ i> 0) `;
ако (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = `Да`;
} иначе {$ cFutureArray. = `Не`-}
}
$ aResult = експлодира (`|`, $ cFutureArray);
Многоизмерни масиви
Много системи за управление на сайтове (SMS) използват масиви "в голям мащаб". От една страна, това е добра практика, а от друга страна, прави прилагането трудно. Дори ако авторът разбира доктрината за "PHP масив в масив", не бива да се злоупотребява: не само разработчикът трябва да свикне с комплексна нотация. Често след известно време самият творец ще помни за дълго време това, което той написа в началото:
връщане на масив (
`view_manager` => масив (41, `template_path_stack` => масив (__DIR__ ./../view `),
`рутер` => масив (`маршрути` => масив (`sayhello` => масив (
`тип` => `Zend Mvc Router Http Literal`,
`опции` => масив (`маршрут` => `/ sayhello`, `по подразбиране` => масив (
`controller` => `Helloworld Controller Index`, `action` => `index`,)))
"контролери" => масив ("invokables" => масив (
`Helloworld Controller Index` => `Helloworld Controller IndexController`))
);
Това е проба практика «PHP масив в масива" на ZF 2. Не много вдъхновяващо в началото, но тя работи, а може би прави тази успешна рамка (например от модул ZendSkeletonApplication / модул / HelloWorld / довереник / module.config.php).
Масивът е важен проект на данни по време на проектирането и разработката. Многоизмерната му версия някога е била популярна, но с течение на времето е имало нужда от масиви с максимум две или три измерения. Така че е по-лесно и по-разбираемо, но от професионална гледна точка, когато нещо започне да се умножава, тогава нещо в изявлението на проблема или в кода не е така.
Прост, достъпен и разбираем
Създаването на php масив в масив е най-добре да се ограничи до две или три нива. Въпреки стабилността и надеждността на PHP, той позволява грешки в обработката на синтактичните конструкции. Това може да се толерира, като имате добър код редактор, свикнал да брои точно скоби и запетаи. PHP обаче не контролира типовете данни (това е кармата на съвременното програмиране) и позволява на разработчика да практикува семантични грешки.
Правилото за контролиране на видовете променливи или собствените идеи за превръщането на семантиката в синтаксис често е недопустим лукс. Това е загуба на скорост на писане, четливост на кода, ... поради това простотата при кодирането винаги има значителна стойност.
PHP има значителна отрицателна характеристика: когато се появи несигурността, скриптът просто виси. Не всички debuggers се справят с непредвидени обстоятелства и много зависи от опита и интуицията на разработчика. Колкото по-прост е алгоритъмът, толкова по-структурирана е информацията, толкова по-вероятно е да се намери грешка или да не се допусне изобщо.
Характерно е, че когато се появиха първите масиви, бяха предложени варианти на данни под формата на структури - неудобен опит да се създаде нещо от различни типове данни. Първият оцелял и придобил нов ефективен синтаксис, последният слизал в историята.
Обикновени и асоциативни маси
Записване на двумерен масив - е друга двойка скоби "[" и "]", например: $ aSrcData [1] [2] означава достъп до елемент [2] на масива [1], въвеждане на масива $ aSrcData. В PHP няма изискване предварително да се декларират данните. Всяка декларирана информация винаги може да се проверява за съществуване.
Много е ефективно да се създава нещо, само когато е необходимо, под формата, в която се изисква, и да се унищожи, когато нуждата от нея изчезне. Използвайки смислени имена като ключове (индекси), можете да получите четими конструкти, които имат смисъл в контекста на текущото място в алгоритъма:
$ aAnketa [`име`] = `Иванов`
$ aAnketa [`възраст`] = 42-
$ aAnketa [`work`] = `Директор`
$ aAnketa [`активно`] = true-
$ aТаблица [] = $ aAnketa-
$ aAnketa [`име`] = `Петров`-
$ aAnketa [`възраст`] = 34-
$ aAnketa [`work`] = `Мениджър`
$ aAnketa [`активно`] = true-
$ aТаблица [] = $ aAnketa-
$ aAnketa [`име`] = `Афанасиев`
$ aAnketa [`възраст`] = 28-
$ aAnketa [`work`] = `Работа`
$ aAnketa [`активно`] = невярно-
$ aТаблица [] = $ aAnketa;
$ sOne. = implode (";", $ aTable [1]). "
`- // втория PHP масив в низ
$ sOne. = $ aTable [1] [`work`] - // достъп до един елемент от втория масив
Резултатът от този пример (първият масив е нормален, клавишите в него започват с 0, вторият масив е асоциативен, в него има четири клавиша: "име", "възраст", "работа", "активен"):
$ sOne = `Петров-34- Мениджър- 1
Мениджър ";
В този прост пример можете да видите как създаденият въпросник може да се приложи към всички служители. Можете да създадете масив от служители с индекси по техните регистрационни номера, а ако имате нужда от конкретен служител, изберете го от номера на служителя.
Ако организацията има подразделения или има сезонни работници или е необходимо да се идентифицират поотделно работещите пенсионери, ... дизайнът на "PHP-масив в масив" е много удобен, но човек никога не трябва да се пренася с измерение. Два или три измерения са лимитът за ефективно решение.
Ключове за работа с масиви
Ако преди това имаше значение как работи всичко, тогава през последните години традициите на двойната ера, когато програмистът искаше да знае точно как се съхраняват елементите на масива и искаше да имат пряк достъп до тях, бяха напълно забравени. Има много кодиране на символи, които заемат повече от един байт в паметта. Думата "бит" вече може да се намери само при операции за търсене с битове, но търсенето в PHP масивата е отделна тема. Достъпът до елементи може да бъде прост и асоциативен. В първия случай елементите на масива (имащи някои от типовете, налични в PHP) са номерирани 0, 1, 2, ... Във втория случай програмистът определя свой собствен индекс, често наричан "ключ", за да достигне желаната стойност.
$ aLine ["fruit"] = "orange" - // тук PHP клавиша на масива = "fruit"
или (така че всичко да е вярно с кодирането на страницата и кода):
$ aLine [iconv (`UTF-8`, `CP1251`, `Fruit`)] = iconv (`UTF-8`, `CP1251`, `orange`);
При добавяне на $ aLine към нова стойност:
$ aLine [] = iconv ("UTF-8", "CP1251", "праскова") -
$ aLine [iconv ("UTF-8", "CP1251", "зеленчук")] = iconv ("UTF-8", "CP1251"
$ aLine [] = iconv ("UTF-8", "CP1251", "патладжан");
в резултат на цикъла:
foreach ($ aLine като $ ck => $ cv) {
$ cOne. = $ ck. `=`. $ cv. "
`-
}
ще получи:
плод = оранжево
0 = праскова
зеленчук = краставица
1 = патладжан
PHP клавишът на масива с добавянето на елементите "праскова" и "патладжан" се формира последователно от 0, а когато посочите стойността му ще бъде равна на тази стойност.
Премахване на елементи от масив
Най-лесният начин да премахнете елемент от PHP масив по време на обработката му. В този случай, например, в резултат на изпълнението на цикъла, оригиналният масив се сканира и се създава нов, в който не са написани ненужни елементи.
Възможно е да се действа по-лесно. Ако се приложи последният пример:
unset ($ aLine [0]) - // премахване на елемента на PHP масива
тогава резултатът ще бъде:
плод = оранжево
зеленчук = краставица
1 = патладжан
Варианти на манипулационни елементи на масиви могат да бъдат конструирани много. Например, като използвате функциите: implode () и explode (), можете да напишете PHP масив в единичен разграничен низ и да го анализирате обратно в друг масив - от друг сепаратор.
За да изтриете един цял масив в PHP, просто напишете: unset ($ aLine);
Това е достатъчно.
Търсене в масив
PHP съдържа специални функции за търсене array_keys (), array_values (), array_key_exist (), и in_array (), но преди да решите да ги използвате, трябва да помислите да правите търсене в масива PHP сам.
Всеки проект е конкретен тематична област, конструирани масиви, особено когато част от семантиката се прехвърля в синтаксиса и се представя от набор от напълно конкретни, смислени ключове. Това ви позволява да изпълнявате свои собствени функции за търсене, които също могат да бъдат обозначени смислено.
В PHP можете да избирате функции, чието име е определено по време на изпълнението на програмата. Много практичен пример от PHPWord библиотеката, който ви позволява да четете и създавате документи на MS Word:
$ elements = масив (`Текст`, `Inline`, `TextRun`, `Link`, `PreserveText`, `TextBreak`,
ListItem, ListItemRun, таблица, изображение, обект, бележка под линия,
`Endnote`, `CheckBox`, `TextBox`, `Field`, `Line`);
$ функции = масив ();
за ($ i = 0- $ i < count ($ elements) - $ i ++) {
$ функции [$ i] = `добавяне`. $ елементи [$ i] -
}
В резултат на това масивът $ functions ще получи стойностите на масива $ elements, т.е. имената на действителните функции, които работят с действителните елементи на документа.
Избирайки $ functions [4] за $ elements [4], можете да получите идеално търсене и бърз резултат.
Сортиране на елементи
сортиране задача данни е важна и PHP предоставя няколко функции за това: сортиране (), rsort (), asort (), ksort (), ... възходящ и низходящ елементи от последните две функции запази отношенията между ключове и стойности. Понякога има смисъл да се смесват стойностите на масива на случаен принцип - Разбъркване ().
Използвайки PHP функциите за сортиране, не трябва да забравяме, че елементите могат да имат не само различни типове, но и съвсем естествено съдържание. Преди всичко трябва да внимавате да сортирате линиите, съдържащи руски букви, да сортирате датата, както и числата, които се записват в различни формати.
Най-добрият начин да напишете сами идеалното решение, поне във фазата на тестване на скрипта, е ръчното сортиране. Това ще помогне да се очакват непредвидени ситуации.
Малки масиви
С функциите имплода () и експлозия (), масивът може лесно да се трансформира в низ и да се върне. Това ви позволява да съхранявате данни в компактен изглед и да ги разположите в удобно състояние, ако е необходимо.
Масив подрежда нови възможности. Например задачата за търсене на ключови думи в текста изисква резултатите от търсенето да не се добавят многократно.
$ cSrcLine = `Текстов текст ListItemRun TextBox ListItem Текстова кутийка Отметка Box CheckBox TextBox Footnote`;
$ aSrc = експлодира (``, $ cSrcLine) -
$ cDstLine = ``;
за ($ i = 0- $ i < брой ($ aSrc) - $ i ++) {
$ cFind = `[`. $ aSrc [$ i]. `] "-
ако (! is_integer (strpos ($ cDstLine, $ cFind))) {
$ cDstLine. = $ cФинд-
}
}
$ aDst = експлодира (`] [`, $ cDstLine) -
$ cOne = implode (`-`, $ aDst);
В резултат на това променлива $ КОНУСЕН получават само стойностите от оригиналните линии, които отговарят там веднъж: "текстова ListItemRun- TextBox- Редовете; контрарелси Box- CheckBox- Бележка под линия".
Руски език в ключове и значения
Не се препоръчва да се използва нещо, свързано с национални кодировки, в синтактични конструкции. Руският език, както всички други езици, чиито знаци са извън a-z, няма да причини проблеми в областта на данните, но не и в синтаксиса на кода. Понякога дори проста задача в PHP "да изведете масив на принтер или на екран" ще доведе до "krakozyabram", а по-често просто да спрете сценария.
PHP - език лоялен и толерантен на националния характер, но има много ситуации, в които количеството на извършената работа, трябва да се направи отново, само защото на точното място в точното време ще се появи на ключа, се установи, кой няма да бъде възможно.
PHP Синтаксис и езикова среда
Не забравяйте, че PHP синтаксиса е едно нещо, но синтаксиса на този синтаксис "се занимава" с други приложения, с операционната система, с хардуерни опции. Има много възможности, никога не е възможно да се предвиди всичко.
Правилото "в кода има само код, а на входа, вътре и на изхода има някаква информация" ще помогне да се избегнат непредвидени изненади. PHP-стойността в масива може да бъде "руски", но ключът към нея трябва да бъде синтактично коректен не само от позициите на даден език, но и от позициите на неговата работна среда.
- Java масиви от низове. Сортиране на масив в Java. Двуизмерен Java масив
- Масивите са ... Кратко въведение в темата
- JS foreach обект като вариант дизайн
- Ефективни линии на foreach: PHP и редовни масиви
- PHP: последният елемент. Масив в динамика
- Java Array. Масиви в Java. Java за начинаещи
- jаvascript Array за съхраняване на неограничен брой променливи
- Стъпка / поп на
- jаvascript Array за съхраняване на неограничен брой променливи
- Използване на функцията за експлозия на PHP
- Използване на indexOf (jаvascript) при работа с масиви и низове
- jаvascript: работа с низове, функции
- Популярни методи за групиране на елементи на масив: сортиране по вложки и използване на ключ
- Достъп до извадкови резултати чрез извличане на MySQL масив
- Как да определите броя елементи в PHP масив?
- Обекти и масиви от PHP: масив push & pop
- PHP array_search: търсене на стойност в масив
- Примери за използване на дължината на jаvascript
- Динамичен масив и неговите характеристики
- Структуриран тип - едномерен масив
- Как работи масивът PHP?