Autor | Zpráva | ||
---|---|---|---|
majo80 Profil * |
#1 · Zasláno: 3. 12. 2012, 20:19:15
Zdravím, potreboval by som vedieť ako spracovať toto:
Array ( [0] => Array ( [0] => 1520 [1] => Titul číslo 0 [2] => 11.95 [3] => 9.56 [4] => Popis krátky 0. [5] => Popis dlhý 0. [6] => kľúčové slová 0 [7] => 100 [8] => 1 [9] => Maxim E. Matkin [10] => Próza, Poézia [11] => ks [12] => 1 [13] => l135155.jpg ) [1] => Array ( [0] => 1520 [1] => Titul číslo 1 [2] => 11.95 [3] => 9.56 [4] => Popis krátky 1. [5] => Popis dlhý 1. [6] => kľúčové slová 1 [7] => 100 [8] => 1 [9] => Maxim E. Matkin [10] => Próza, Poézia [11] => ks [12] => 1 [13] => l135155.jpg ) [2] => Array ( [0] => 1520 [1] => Titul číslo 2 [2] => 11.95 [3] => 9.56 [4] => Popis krátky 2. [5] => Popis dlhý 2. [6] => kľúčové slová 2 [7] => 100 [8] => 1 [9] => Maxim E. Matkin [10] => Próza, Poézia [11] => ks [12] => 1 [13] => l135155.jpg ) [3] => Array ( [0] => 1520 [1] => Titul číslo 3 [2] => 11.95 [3] => 9.56 [4] => Popis krátky 3. [5] => Popis dlhý 3. [6] => kľúčové slová 3 [7] => 100 [8] => 1 [9] => Maxim E. Matkin [10] => Próza, Poézia [11] => ks [12] => 1 [13] => l135155.jpg ) [4] => Array ( [0] => 1520 [1] => Titul číslo 4 [2] => 11.95 [3] => 9.56 [4] => Popis krátky 4. [5] => Popis dlhý 4. [6] => kľúčové slová 4 [7] => 100 [8] => 1 [9] => Maxim E. Matkin [10] => Próza, Poézia [11] => ks [12] => 1 [13] => l135155.jpg ) ) Pokiaľ možno spracovať to po krokoch, teda najskôr jeden riadok, vytiahnuť jednotlivé polia, potom druhý,atď.... Viete mi pomôcť? Ďakujem. |
||
panther Profil |
#2 · Zasláno: 3. 12. 2012, 20:31:51
majo80:
jak zpracovat? Co má být výstupem? Zpracovat se to dá mnoha způsoby, záleží na výstupu, který se ti hodí. Každopádně se podívej na cykly, asi foreach. |
||
majo80 Profil * |
#3 · Zasláno: 3. 12. 2012, 20:38:51
panther:
Výstup má byť v každom kroku napr. takýto: (pre [0] => Array) $data1 = 1520; $data2 = Titul číslo 0; $data3 = 11.95; $data4 = 9.56; $data5 = Popis krátky 0.; $data6 = Popis dlhý 0.; $data7 = kľúčové slová 0; $data8 = 100; $data9 = 1; $data10 = Maxim E. Matkin; $data11 = Próza, Poézia; $data12 = ks; $data13 = 1; $data13 = l135155.jpg; |
||
Rellik Profil |
#4 · Zasláno: 3. 12. 2012, 20:46:50
A jaký v tom máš problém? Zkoušel jsi to nějak řešit? Řešení není zas tak složité jak to možná vypadá. Stačí ti v podstatě foreach ve foreachu. Trochu pohledej a jak ti to dál nepůjde zkus napsat jak jsi to zkoušel řešit a třeba někdo nakopne dál. Bez trochy snahy ti nikdo konkrétní kód asi vymýšlet nebude... Nápovědu už máš... ;)
|
||
panther Profil |
#5 · Zasláno: 3. 12. 2012, 20:46:59
majo80:
převést pole do takhle indexovaných proměnných je holý nesmysl. To ani nedělej... máš někde chybu v návrhu aplikace, zaměř se na ní. Číslované proměnné jsou blbost. |
||
majo80 Profil * |
#6 · Zasláno: 3. 12. 2012, 20:59:54
Rellik:
Jasné, určite niečo skúsim, potreboval som len nakopnúť správnym smerom. panther: Prečo je to blbosť? Pokiaľ potrebujem ďalej pracovať s jednotlivými výstupmi, tak ako inak ich získať? |
||
panther Profil |
#7 · Zasláno: 3. 12. 2012, 21:10:39
majo80:
proč nepracuješ přímo s tím polem? To je na takovou práci přeci ideální, ne? Pokud máš (a začátečníci mívají docela často) proměnné promenna1, promenna2, promenna3 , je jediným správným řešením je převést to na pole. Ty pole máš a jdeš, úplně nepochopitelně, opačným směrem.
|
||
Rellik Profil |
#8 · Zasláno: 3. 12. 2012, 21:35:48
majo80:
„tak ako inak ich získať“ No z tohoto pole cos ukázal můžeš k jednotlivým položkám přistupovat tímto způsobem: $výstup = $pole[0][1]; // první položka z prvního pole v poli $jiný výstup =$pole[1][2]; // druhá položka z druhého pole v poli $uplně jiný výstup =$pole[4][6]; // šestá položka z pátého pole v poli ty pole můžeš definovat rovnou do scriptu kam potřebuješ... bez toho aniž bys musel plnit ty proměnné 1,2,... až nevímkolik... Zkus si to pole vypsat pomocí print_r($pole); a uvidíš jak je to řazeno a podle toho pak dosazuj ty věci z pole kam potřebuješ... ;) |
||
peta Profil |
#9 · Zasláno: 4. 12. 2012, 09:52:23
[#3]majo80
for ($i=0;$i<count($pole)) for ($j=0;$j<count($pole[$i])) ${'data'.$j} = $pole[$i][$j]; |
||
majo80 Profil * |
#10 · Zasláno: 4. 12. 2012, 19:49:56
Takže som skúsil niečo takéto, ale chybička sa našla:
$pole = Array ( [0] => Array ( [0] => 1520 [1] => Titul číslo 0 [2] => 11.95 [3] => 9.56 [4] => Popis krátky 0. [5] => Popis dlhý 0. [6] => kľúčové slová 0 [7] => 100 [8] => 1 [9] => Maxim E. Matkin [10] => Próza, Poézia [11] => ks [12] => 1 [13] => l135155.jpg ) [1] => Array ( [0] => 1520 [1] => Titul číslo 1 [2] => 11.95 [3] => 9.56 [4] => Popis krátky 1. [5] => Popis dlhý 1. [6] => kľúčové slová 1 [7] => 100 [8] => 1 [9] => Maxim E. Matkin [10] => Próza, Poézia [11] => ks [12] => 1 [13] => l135155.jpg ) [2] => Array ( [0] => 1520 [1] => Titul číslo 2 [2] => 11.95 [3] => 9.56 [4] => Popis krátky 2. [5] => Popis dlhý 2. [6] => kľúčové slová 2 [7] => 100 [8] => 1 [9] => Maxim E. Matkin [10] => Próza, Poézia [11] => ks [12] => 1 [13] => l135155.jpg ) [3] => Array ( [0] => 1520 [1] => Titul číslo 3 [2] => 11.95 [3] => 9.56 [4] => Popis krátky 3. [5] => Popis dlhý 3. [6] => kľúčové slová 3 [7] => 100 [8] => 1 [9] => Maxim E. Matkin [10] => Próza, Poézia [11] => ks [12] => 1 [13] => l135155.jpg ) [4] => Array ( [0] => 1520 [1] => Titul číslo 4 [2] => 11.95 [3] => 9.56 [4] => Popis krátky 4. [5] => Popis dlhý 4. [6] => kľúčové slová 4 [7] => 100 [8] => 1 [9] => Maxim E. Matkin [10] => Próza, Poézia [11] => ks [12] => 1 [13] => l135155.jpg ) ); echo $pole[0][1]; vypíše to problém: Parse error: syntax error, unexpected '[', expecting ')' in Ak celé array dám do úvodzoviek, tak zase: Fatal error: Cannot use string offset as an array in |
||
Rellik Profil |
Problém ti ho vypsalo, tak h naprav... u všech hodnot ti chybí uzovoky...
$pole = Array ( [0] => Array ( [0] => '1520' [1] => 'Titul číslo 0' [2] => '11.95' [3] => '9.56' [4] => 'Popis krátky 0.'... atd |
||
abc Profil |
#12 · Zasláno: 4. 12. 2012, 20:27:22
Rellik, majo80:
A čárky.. $pole = Array ( [0] => Array ( [0] => '1520', [1] => 'Titul číslo 0', [2] => '11.95', [3] => '9.56', [4] => 'Popis krátky 0.' |
||
Rellik Profil |
#13 · Zasláno: 4. 12. 2012, 20:34:13
abc:
Jo ty taky... na to sem zapomněl... :) |
||
majo80 Profil * |
#14 · Zasláno: 4. 12. 2012, 21:42:39
Fúha, no to sa budem musieť na to lepšie pozrieť, pretože kód ktorý mi vypisuje to pole som nerobil ja a budem sa musieť nejako dostať do toho, kde to mám pridať a ako. Ak by ale niekto mal chvíľu čas, a chcel urobiť dobrý skutok a pomôcť mi, tak tu je ten kód:
function csvstring_to_array($string, $CSV_SEPARATOR = ';', $CSV_ENCLOSURE = '"', $CSV_LINEBREAK = "\r\n") { $array1 = array(); $array2= array(); $array1=preg_split('#'.$CSV_LINEBREAK.'#',$string); for($i=0;$i<count($array1);$i++){ for($o=0;$o<strlen($array1[$i]);$o++){ if(preg_match('#^'.$CSV_ENCLOSURE.'#', substr($array1[$i],$o))){ if(!preg_match('#^"(([^'. $CSV_ENCLOSURE.']*('. $CSV_ENCLOSURE.$CSV_ENCLOSURE .')?[^'.$CSV_ENCLOSURE.']*)*)'. $CSV_ENCLOSURE.$CSV_SEPARATOR.'#i',substr($array1[$i],$o, strlen($array1[$i])),$mot)){ $mot[1]=substr(substr($array1[$i],$o,strlen($array1[$i])),1,-1); }$o++;$o++; } else{if(!preg_match('#^([^'.$CSV_ENCLOSURE. $CSV_SEPARATOR.']*)'.$CSV_SEPARATOR.'#i', substr($array1[$i],$o,strlen($array1[$i])),$mot)){ $mot[1]=substr($array1[$i],$o,strlen($array1[$i])); } } $o=$o+strlen($mot[1]); $array2[$i][]=str_replace($CSV_ENCLOSURE.$CSV_ENCLOSURE, $CSV_ENCLOSURE,$mot[1]); } } return $array2; } $results = print_r(csvstring_to_array("test.csv"), true); Ale ďakujem veľmi moc za vaše rady... |
||
abc Profil |
#15 · Zasláno: 4. 12. 2012, 21:46:56
majo80:
Moc se mi nechce zkoumat ta funkce, ale nestačilo by ji nahradit fgetcsv? |
||
majo80 Profil * |
#16 · Zasláno: 4. 12. 2012, 21:50:51
abc:
fgetcsv robilo problémy pri špeciálnych znakoch v CSV súbore.... |
||
juriad Profil |
majo80:
Ta funkce csvstring_to_array funguje více-méně dobře, tady chybu nehledej. Ty jen motáš dohromady dvě různé "reprezentace pole". výsledek print_r slouží jen pro člověka. print_r zde bylo zmíněno jako způsob, jak se TY můžeš podívat na to, co nějaká proměnná skutečně obsahuje. Proto výstup print_r není a nikdy nebude validní zápis pole v PHP. $results = csvstring_to_array("test.csv"); // funkce vrací to pole, které potřebuješ echo $results[0][1]; // už bude fungovat |
||
majo80 Profil * |
#18 · Zasláno: 4. 12. 2012, 22:09:20
juriad:
jednoduché, rýchle a hlavne fungujúce. ďakujem, no idem študovať viac o poliach... A ďakujem aj ostatným za ich čas a pomoc. |
||
Časová prodleva: 11 let
|
0