Титла: Интересен проблем с РНР цикъл Публикувано от: senser в Jun 29, 2006, 14:57 Здравейте,
Става дума за следното: пиша един скрипт на РНР, който ще представлява терминологичен речник. Термините от речника се пазят база данни....., но това е без значение за проблема. Правя следния цикъл с цел извеждане на буквите от английската азбука:
Резултата от изълнението на този фрагмент от скрипта може да се види тук. Интересното е, че ако цикъла е от "А" до "У" работи, както се очаква - извежда буквите от "А" до "У", но като го пусна от "А" до "" и се получава това. Идеи защо се получва така ? П.П. Нарочно съм сложил за тест да се извежда размера и типа на променливата по време на итерациите Титла: Интересен проблем с РНР цикъл Публикувано от: sdr в Jun 29, 2006, 17:07 Така става като нямаш добре дифинирани типове ... може и да има резон в поведението в контекста на стрингове - аз незнам какво прави оператора + върху стрингове ... за това най добре ползвай ord и char
Титла: Интересен проблем с РНР цикъл Публикувано от: senser в Jun 29, 2006, 18:14
1. Аз също предположих, че проблема е в типа на променливата, но доколкото знам в РНР няма променлива тип "char" - поправете ме ако греша 2. И все пак каква е логиката цикълът да работи от "А" до "У". Титла: Интересен проблем с РНР цикъл Публикувано от: sdr в Jun 29, 2006, 18:25 То сега ако седнем да си задаваме въпроси каква е логиката в PHP можем да откараме няколко дена. Доколкото знам няма char но ти определено не работиш праилно с стринговете за тях не е дефинирана операция + така че можеш да се сърдиш че не те псува за това но не можеш да се сърдиш че работи до у
![]() Титла: Интересен проблем с РНР цикъл Публикувано от: в Jun 29, 2006, 18:43 ![]() ![]()
Айде сега - на крив космонавт космоса му бил виновен или там както се казваше. Не е проблема в ПХП-то ![]()
В грешка си - земи да прочетеш из ръководството! Оператора за инкрементиране си работи ОК със стрингове, просто не си запознат как точно действа. Ето от ръководството:
Сега предполагам става ясно, че след Z следва AA, а както сам ще се сетиш AA е по-малко от Z. Това е причината тое цикъл да се завърти чак до ZZ, което вече е по-голямо от Z. Въобще - не е това начина да постигнеш това което искаш. Ето как според мен трябва да го направиш:
Естествено става и по "твоя" начин - ако го промениш малко, да речеме така:
Титла: Интересен проблем с РНР цикъл Публикувано от: senser в Jun 30, 2006, 10:43 1. Не съм си и помислил че проблема е в РНР. Ясно ми е, че аз греша и искам да разбера къде точно.
2. Инкрементирането на char променлива не би трябвало да е по-различно от това на integer примерно. Затова и помислих, че така "завъртян" цикъла не трябва а е проблем. Естествено скрипта го направих по друг начин (един от многото възможни начини), но не можах да стигна до логично обяснение защо "върти" до "ZZ". 3. Не знаех това, че в РНР char инкрементирането работи по този начин:
И пак не мога да си го обясня - ОК след 'Z' следва 'АА', но защо цикъла стига изобщо до 'Z'+1 ![]() Титла: Интересен проблем с РНР цикъл Публикувано от: в Jun 30, 2006, 14:46
Защото Z е <= Z, след което следва Z+1, което е на практика AA
Защото първата буква от АА е A, а A е преди Z.
Хм - май е ZA, не ZZ Титла: Интересен проблем с РНР цикъл Публикувано от: senser в Jun 30, 2006, 17:13
E по тази логика един цикъл <=10 ще върти до 11 .... ![]() Титла: Интересен проблем с РНР цикъл Публикувано от: senser в Jul 04, 2006, 17:58 Ееей оставихте ме да си блъскам главата сам с такъв "глупав" проблем
![]() Титла: Интересен проблем с РНР цикъл Публикувано от: в Jul 05, 2006, 10:42 Какъв проблем ? Неразбирам какво точно питаш ?
Титла: Интересен проблем с РНР цикъл Публикувано от: senser в Jul 06, 2006, 10:27 Sorry, сега забелязах, че линка вече не работи.
Поправил съм го и сега се вижда какъв ми е проблема с въртенето на цикъла - продължавам да не мога да схвана зао върти и след "Z" Титла: Интересен проблем с РНР цикъл Публикувано от: в Jul 06, 2006, 11:14 Така както си го написал $i<='Z' , следва че тое цикъл ще се върти докато $i нестане по-голямо от Z !
Кога $i ще бъде по-голямо от Z е въпроса ? Когато $i=Z условиетео $i<='Z' е изпълнено, след което $i става AA ... при $i=AA условието $i<=Z пак е изпълнено (AA<Z) и цикъла продължава. Титла: Интересен проблем с РНР цикъл Публикувано от: senser в Jul 06, 2006, 16:12
Мдаааа, не съм предполагал, че един елементарен цикъл "фор" няма да го схвана веднага..... ![]() Както се казва: "от дървото не мога да видя гората". Мерси на всички за помощта! |