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