Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

bojanm avatar bojanm 3 Точки

[Exam Problems] PHP Basics - 5 September 2014 - Problem {4} - Computer Shop

Здравейте колеги , опитвам се да реша тази задача и ми е нужна малко помощ!

Защо при избор на desctop ми вкарва в масива повтарящ се елемент "ACER ASPIRE XC-605" - просто не мога да видя кое не е наред. Бихте ли ми помогнали да се отбатачя!

Благодаря на всички отзовали се.

ето и решението до някъде( не е завършено но за пробата на тази грешка работи):

Mod Edit: Нарушена т. 12. от Правилата на форума: Във всеки пост е позволено цитирането на не повече от 15 реда код. Ако искате да споделите по-дълъг код, използвайте сайтове като Pastebin и Github Gist). Също така запознайте се и с правилата за именуване на теми във форума (т. 9)!!!

Тагове:
0
PHP Web Development Basics 12/01/2015 00:21:27
RoYaL avatar RoYaL Trainer 6849 Точки

http://stackoverflow.com/questions/21974581/why-are-php-references-a-bad-idea-how-do-zvals-and-copy-on-write-come-into-it

foreach($matrix as &$ma)

    $tmp[] = &$ma[3];

DONT... DO... IT :) разкарай референцията. Ще елиминира конкретния проблем. Ако разчиташ на нея най-вероятно ще направи други. Но със сигурност си тръгнал грешно, ако асайнване с референция ти е подходът. Махни я и от форийч бодито.

Конкретният проблем е, че итерирането около масив не е освобождаваща операция.

foreach ($arr as $value) { } ще асайнне на променливата $value извън цикъла - последния елемент от масива. Ако обаче има референтност &$value, то последният елемент ще се пази по референция. Всяка промяна по $value ще се отрази в оригиналния масив. Когато завъртиш отново през масива със същото име за променлива $value (в твоя случай $ma) овъррайдваш стойността на $ma на 1вата итерация от завъртането. Реално микрорешение на рпоблема ще е да кажеш в case 'desktop': foreach ($matrix as $ma1) ... тогава проблемът отново няма да се наблюдава, до момента в който не решиш да промениш нещо по променлива с име $ma ... тогава всичко ще приключи :)

$tmp[] = &$ma[3]; този ред също е доста опасен. Всяка промяна по $tmp масива ще рефлектира по някакъв начин върху 4тия елемент от $matrix масива. За постигането на някаква конкретна цел, много рядко референция би бил правилният начин. Обикновено хората ги ползват за някакви микрооптимизации останали в миналото (както се вижда от линка от стековърфлоу). За съжаление някои нейтив функции в РНР също работят с референции :(

0
18/12/2014 12:28:07
bojanm avatar bojanm 3 Точки

Благодаря ти за отговора. Понеже взимах код от интернет на едно място я изтрих , но тук съм забравил. Сега мисля ,че работи коректно. 

Искам да попитам как да подкарам array_multisort Descending- много опита правих, но неможах да го направя.

0
18/12/2014 12:53:04
RoYaL avatar RoYaL Trainer 6849 Точки

Радвам се, че съм помогнал :) За сортирането използвай SORT_DESC константата :)

0
18/12/2014 12:56:12
Filkolev avatar Filkolev 4482 Точки

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

Никъде не се казва какъв да е форматът на цената, а от дадения пример се вижда само, че не трябва да се закръгля с floatval, т.е. 200.00 си остава така и на изхода, а не се изписва като 200. Логично предположение е, че принтираш цената така, както ти е подадена на входа, няма как по дадения пример човек да заключи, че трябва да ползва загръгляне.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.