Autor Zpráva
kokolino
Profil *
č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
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 *
__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
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 *
__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 *
__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
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 *
__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
na riadku 3 má byť $mul=abc; je tam preklep
__construct
Profil
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
__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.
Matthew113
Profil
kokolino:
Definujete "$výpis1", nikoliv "$vypis1", řádek č. 15. (rozdíl v diakritice)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0