Autor | Zpráva | ||
---|---|---|---|
kokolino Profil * |
#1 · Zasláno: 3. 3. 2011, 13:20:29
čawte
chcem sa spýtať dá sa nejak zistiť či sú v súbore všetky slová rovnaké myslím niečo takéto v súbore bude: abc,abc,abc,abc, cde,abc,abc,abc a keď si dám vypísať súbor tak by som si chcel vypísať len tie slová, ktoré su rovnaké |
||
__construct Profil |
#2 · Zasláno: 3. 3. 2011, 13:24:08 · Upravil/a: __construct
kokolino:
Tie slová budú vždy oddelené čiarkami (alebo nejakým iným pevne stanoveným znakom)? Ak áno pozri si funkciu explode() a potom túto funkciu.
|
||
kokolino Profil * |
#3 · Zasláno: 3. 3. 2011, 13:30:42
__construct:
bude to takto : 000 000 000 abc 000 000 001 abc 000 000 000 cde 000 000 001 abc a ja mám zistiť či sa ten text po tých číslach rovná , v súbor je to zapísane takto ako som to teraz napísal (klasicky nový riadok cez enter) prvý krát som to len tak naznačil, práve kvôli tomu aby ste mi len poradili nejakú funkciu pomocou, ktorej by to mohlo ísť to explode() si idem pozrieť |
||
__construct Profil |
#4 · Zasláno: 3. 3. 2011, 13:56:39 · Upravil/a: __construct
kokolino:
Pokiaľ tam budú aj čísla a Ty chceš kontrolovať iba slová, môžeš použiť regulárny výraz ([a-zA-Z]+) a potom tú funkciu čo som spomínal.
|
||
kokolino Profil * |
#5 · Zasláno: 3. 3. 2011, 14:35:47
__construct:
tú funkciu som si pozrel aj príklady čo sú tam uvedené, ale nie je mi jasné ako zadám podmienku na nový riadok <?php $subor = file("janko.txt"); $riadok=explode("",$subor); echo "$riadok[0]"; ?> a vypíše mi to, že som nezadal delimeter pri tom tam je príklad uvedený, že text je neoddelený a je medzi úvodzovkami a rozdelí to na jednotlivé slová |
||
kokolino Profil * |
#6 · Zasláno: 3. 3. 2011, 14:43:46
__construct:
tak som sa pomýlil malo to byť takto <?php $subor = file("janko.txt"); $riadok=explode(" ",$subor); echo "$riadok[0]"; ?> a na výstupe som dostal array a nie hodnotu toho poľa |
||
Matthew113 Profil |
#7 · Zasláno: 3. 3. 2011, 14:44:39
kokolino:
„pri tom tam je príklad uvedený, že text je neoddelený a je medzi úvodzovkami a rozdelí to na jednotlivé slová“ To ano, avšak je rozdíl mezi "" || " ". (prázdný string | mezera) |
||
kokolino Profil * |
#8 · Zasláno: 3. 3. 2011, 17:19:04
__construct:
tak som vymyslel co si takéto šialené súbore som zmenil zápis na tvar 000 abc 001 cde 010 abc 011 abc 100 abc 101 cde <?php $file = file("janko.txt", FILE_SKIP_EMPTY_LINES); $abc=abc; foreach($file as $line) { $okno=explode(" ",$line); $otazka=substr($okno[0],-1); switch($otazka){ case 0: // ak sa posledné číslo trojčíslia rovná 0 if($mul==trim($okno[1])){ $vypis=1;} break; case 1: // ak sa posledné číslo trojčíslia rovná 1 if($mul!=trim($okno[0])){ $výpis1=1; // ak sem dám $vypis=2 tak mi to prepise hornu podmienku break; } } if($vypis==1) echo"G: 000 abc"; elseif($vypis1==1) echo"nejde to"; ?> problém je v tom, že switch sa tvrári tak, že sa vyhodnotí len prvá podmienka a nikdy sa na výstupe neobjaví hláška nejde to pri tom switch dostáva premenlivo hodnoty 0 a 1, kedže prechádzam celý súbor cyklom forearch |
||
kokolino Profil |
#9 · Zasláno: 3. 3. 2011, 17:22:33
na riadku 3 má byť $mul=abc; je tam preklep
|
||
__construct Profil |
#10 · Zasláno: 4. 3. 2011, 08:25:34
kokolino:
Nejak sa v tom strácaš - to čo tu robíš teraz sa nejak nezhoduje s tým čo si písal na začiatku. To čo si písal by sa dalo riešiť takto nejako: <?php /** * Funkcia vráti duplicitné položky z poľa */ function arrayDuplicate($array) { return array_unique(array_diff_assoc($array,array_unique($array))); } $subor = file_get_contents('janko.txt'); // načítame súbor $subor = str_replace("\r\n",' ',$subor); // nahradíme odskoky na nový riadok za medzery $subor = explode(' ',$subor); // rozdelíme reťazec na slová a uložíme do poľa // Zobrazíme výsledok echo "<pre>"; var_export(arrayDuplicate($subor)); |
||
kokolino Profil |
#11 · Zasláno: 4. 3. 2011, 18:28:34
__construct
otestoval som čo robí Vás kód na výstupe som dostal toto array ( 5 => 'mul', 19 => 'b', 33 => '', ) čo je vlastne to čo som potreboval, kedže sa zobrazili len slová čo sú rovnaké to čo som spravil ja robí to isté, myslím to tak, že mi to tiež zistí, či sa tie slová rovnajú ale na určitej "pozícií", či ako by som to povedal, lenže u mňa problém nastane ak sa nerovnajú, lebo sa to tvári , že sa to tam nedostane ako keby switch nedostal hodnotu 1 ,ale on ju dostáva. |
||
Časová prodleva: 14 dní
|
|||
Matthew113 Profil |
#12 · Zasláno: 18. 3. 2011, 17:43:29 · Upravil/a: Matthew113
kokolino:
Definujete "$výpis1", nikoliv "$vypis1", řádek č. 15. (rozdíl v diakritice) |
||
Časová prodleva: 13 let
|
0