В PHP масивите има две интересни функции: движението foreach и последният елемент. Тоест, в посока напред и назад. Езикът дава на променливата правото да променя вида си по свое усмотрение, а елементът на масива също е променлива. Ако смятате, че има указател към активен елемент в масива и той може да бъде контролиран произволно, тогава, ако разработчикът не спазва, чудесата в програмата няма да бъдат преброени, а поведението му ще бъде "независимо".
"Масивни" възможности на PHP
Масивите винаги са били популярна концепция в програмирането и наскоро придобили нов смисъл и синтактични форми. PHP-цикъла foreach и терминът "последен елемент" са в някакъв смисъл еквивалентни, но се различават само по посоката на движение:
foreach ();
array_pop ().
И в двата случая можете да създавате масиви, както се оказва, и винаги можете да видите всичко. И двата случая отварят възможността да поставят собствената си семантика в синтаксиса на PHP. В първия случай цикълът чете всички официално в реда, в който те се появяват в масива, или в реда, който се формира след манипулиране с него. Във втория случай процесът е същият, но се появява от опашката на масива, преди да започне.
В случай на проблеми, PHP обявява грешка в елемента. Ако параметърът не е масив, в първия случай имаме съобщение PHP: Предупреждение за невалиден аргумент за foreach, във втория има грешка E_WARNING, тоест, "нищо ужасно, но проблемите ще след това".
За реда в масивите
Появата на асоциативни масиви бележи банална промяна в отношението към тях. Ако програмистътне контролира ситуацията - проблемите не могат да бъдат избегнати. Много задачи или части от командата на алгоритъма за създаване на подредени масиви и след това ключовете винаги вървят в ред. Когато можете да изтриете елемент и ключовете след него не се движат напред, масивът не се различава много от асоциативния. Е, че разработчикът не постави ръката си преди името на този или онзи елемент на масива. Обичайният анализ на елементите в контура за (за) е интересен и има смисъл, когато ключовете вървят последователно. Всеки масив винаги има ключ в ред. Когато елемент, който създава празно пространство и за () цикъл е грешка.
Когато разглеждате масива, използването на foreach () или array_pop () никога няма да бъде проблем, но само в първия случай масивът ще остане, а във втория ще изчезне.
За предсказания синтаксис
Цикълът foreach в PHP има позната форма. Можете да укажете партида такава, каквато е: ($ aPass като $ cLine), но можете да посочите ключа: ($ aPass като $ cKey = & gt; $ cLine). Цикълът, използващ array_pop ($ aPass) е от полето на стек на миналото, въпреки че е уместно и интересно в това. Това изобщо не е верига, а просто дава последния елемент от масива, в който той се премахва от масива. Когато PHP операторът foreach стартира, вътрешният указател към масива винаги е настроен на първия му елемент. Промяната на показалеца в цикъла може да доведе до чудеса. Важно е променливата $ cLine да не сочи към елемента на масива $ aPass, но да съдържа неговата стойност, така че ако искате да промените елемента на масива, трябва да поставите символа & amp; В този случай $ cLine ще бъде препратка към елемента на масива, а не към неговата стойност.
Грешкиforeach, PHP последния елемент = добре!
Каква грешка е по-ценна: фатална или пропусната - това е като подправка, по вкуса на предприемача, като се вземе предвид адекватната реакция на клиента. Ако даден елемент е премахнат от масива, той ще забележи само цикъла for. Цикълът foreach PHP и array_pop PHP са абсолютно лоялни. Ако елементът не е от същия тип, той ще бъде забележимо същият като основния елемент на програмата. Ако параметърът foreach не попада в масив или обектът е Невалиден аргумент, въпреки че опцията от array_pop обикновено е нереалистична. Но когато все още се случва, тогава, освен NULL, нищо няма да бъде.
Масиви и обекти
PHP предоставя възможност за преглед на обекти като масиви. Какво е трудно да се каже в този смисъл, но е налице подобно. Масивите могат да съдържат всякакъв тип стойност и да го променят в процеса на изпълнение на програмата. Естествено, елемент от масив може да бъде друг масив или обект. Нивото на гнездене е ограничено от здравия разум. Операторите и езиковите конструкции нямат нищо общо с рекурсията или с нивото на вмъкване. Това е сериозно забавяне на синтаксиса на контролните структури от синтаксиса на описанието на данните. Разработчиците са свикнали с явления като PHP масиви, foreach, array_pop, така че е удобно да се работи с тях.
Перспективата, че контролните структури ще се променят (дори и в далечното бъдеще), изобщо не се очаква.
Масивни обекти (начало)
Струва си да се отбележи, че появата на няколко foreach /array_pop не е трябвало да чака дълго време, но това е само половината от случая. Като цяло, за () {}, while () {} и do {} докато () са дълго време, за да се контролира правилнокухини в масиви и решаване на рекурсионни проблеми, когато даден елемент е масив. Въпреки това, умът на разработчика все още помни неизменната доктрина: масивът е набор от елементи, където елементът на масива е друга единица, която трябва да бъде обработена по съответния начин. Проблемът тук не може да бъде решен в обозримо бъдеще, дори като се вземе предвид ръстът на скоростта на развитие на информационните технологии. В резултат на това трябва да бъдем удовлетворени от това, което е.
Най-прости масиви (вмъкване)
Най-примитивният случай, когато елементите на масив са числа, редове и други елементи на непроменящия се състав и обозначение.
Например номерата на двоичната система за изчисление. По същия начин:
осмична;
десетична;
шестнадесетична. Да се каже, че най-лесният ще бъде масив от месеци, може да бъде, но само при определени условия, тъй като в повечето случаи се нуждаете от цифрово представяне на месеца, трибуквен, руски, китайски, пълен или друг. Определено най-прост ще бъде масив от букви в азбуката. В най-простия масив можете да дефинирате всичко, което обикновено се нарича константи и неизменно за решаващ проблем.
Масиви от обекти (продължение)
Ако откажете други варианти на типа елемент, в допълнение към обекта и най-простия масив, тогава всичко ще бъде абсолютно прекрасно, дори в ръцете на съвременните управляващи структури на езика, които са запазили своята същност от древни времена. Известно е, че обектът комбинира данни и методи, памет и действие. Общата практика на обектно-ориентираното програмиране, разбирана от мнозина, е абстрактна обект, вкоето няма нищо, но всичко е планирано.
Прекрасно състояние на нещата, развивайки верига от наследници от абстрактен обект, получаваме възможност да формираме масиви от един и същи тип данни - абстрактни обекти. Какво точно ще бъде във всеки отделен случай е случаят на технологията и, след като преведе загрижеността за прилагането на семантиката в ръцете на всеки отделен потомък в съответствие с неговата същност, ще получим желаното.