[ JovanT @ 26.03.2005. 16:40 ] @
Bavim se parsiranjem jednog RSS izvora (sportski rezultati) pa se mučim oko nizova. Rezultat koji daje RSS parser je ovakvog oblika:

Code:

Array
(
    [0] => Array
        (
            [Podaci] => (No)001/151    (GMT + 2h,Start at)21:10    (Home Team)RIVER PLATE    (Away Team)RACING CLUB    (Status)NotStartYet    (Minute)-    (Full Time)-    (Half Time)-    (Extra Time)-    (Penalties)-    (Home Yellow Cards)-    (Home Red Cards)-    (Away Yellow Cards)-    (Away Red Cards)-    (Scorers)-
            [Liga] => Country_League: ARGENTINA_AG
        )

    [1] => Array
        (
            [Podaci] => (No)002/151    (GMT + 2h,Start at)21:30    (Home Team)COLON SANTA FE    (Away Team)QUILMES    (Status)NotStartYet    (Minute)-    (Full Time)-    (Half Time)-    (Extra Time)-    (Penalties)-    (Home Yellow Cards)-    (Home Red Cards)-    (Away Yellow Cards)-    (Away Red Cards)-    (Scorers)-
            [Liga] => Country_League: ARGENTINA_AG
        )

    [2] => Array
        (
            [Podaci] => (No)003/151    (GMT + 2h,Start at)21:30    (Home Team)HURACAN TRES ARROYOS    (Away Team)ALMAGRO    (Status)NotStartYet    (Minute)-    (Full Time)-    (Half Time)-    (Extra Time)-    (Penalties)-    (Home Yellow Cards)-    (Home Red Cards)-    (Away Yellow Cards)-    (Away Red Cards)-    (Scorers)-
            [Liga] => Country_League: ARGENTINA_AG
        )
    .
    .
    .



Ja bih želeo da skripta izlista samo jednu određenu ligu nakon čega bih pozvao funkciju za parsiranje elementa Podaci i prikazao domaći i gostujući tim, kao i trenutni rezultat. Kako bi ovo moglo da se uradi?
[ Br@nkoR @ 26.03.2005. 18:58 ] @
xe xe xe
'oćeš da kupiš skriptu koja to radi?

Šalim se naravno, ti želiš kao što sam ja uradio na svom sajtu.

Na prvoj strani izlistaj([$i]['liga']) sve lige i smesti ih u neku drugu promenljivu(niz) kao članove niza, zatim uradi nad tim nizom array_unique kao bi uklonio duplikate i npr. sortiraj članove tog niza (ja sam kod sebe uvek stavio da prvo ide naša liga a ostale sam sortirao). Zatim odštampaj taj niz a kao promenjlivu koju ćeš prosleđivati koristi npr naziv lige kako bi na sledećoj strani pronašao sve utakmice te lige. Zatim na sledećoj strani uzmi ponovo rezultate koje vraća parser i izdvoj sve članove niza gde se liga poklapa sa promenjlivom koju si prosledio putem get metode. I zatim parsiraš vrednosti člana niza podaci tako što ćeš uraditi explode i zatim iz tog novog niza štampaj ono što ti je potrebno.

Pozdrav.
[ JovanT @ 26.03.2005. 21:20 ] @
Pa ti me nisi baš razumeo. Ja sam razumeo postupak koji si ti primenio pri izradi stranice i nije mi problem da shvatim kako bi to trebalo da ide. Jedino nisam siguran kako da baratam nizovima. Za prvi korak sastavio sam ovako nešto:

Code:

$i = 0;
while ($i < 500) {
    $p1[] = $lige[$i]['Liga'];
    $i++;
}
$p1 = array_unique ($p1);
sort ($p1);


A za prikazivanje utakmica u određene lige pokušao sam sa ovim

Code:

$i = 0;
while ($i < 500) {
    if ($lige[$i]['Liga'] == "Country_League: ARGENTINA_AG") {
        $utakmice[] = $lige[$i];
    }
    $i++;
}


i to mi radi nekako samo nisam siguran da je ovo i najbolje rešenje. Postoje li neko elegantnije ili ću morati da se oslonim na ovo?
[ Br@nkoR @ 27.03.2005. 08:26 ] @
Ti nećeš uvek imati 500 članova niza kojeg vraća rss parser. Ovako sam ja nešto mislio (na brzinu):
Code:

// imas niz $rezultati kojeg vraca rss parser

$rezultati = Array( Array( 'Podaci' => '(No)001/151    (GMT + 2h,Start at)21:10    (Home Team)RIVER PLATE    (Away Team)RACING CLUB    (Status)NotStartYet    (Minute)-    (Full Time)-    (Half Time)-    (Extra Time)-    (Penalties)-    (Home Yellow Cards)-    (Home Red Cards)-    (Away Yellow Cards)-    (Away Red Cards)-    (Scorers)-',
                           'Liga' => 'Country_League: ARGENTINA_AG'
              ),
                    Array( 'Podaci' => '(No)002/151    (GMT + 2h,Start at)21:30    (Home Team)COLON SANTA FE    (Away Team)QUILMES    (Status)NotStartYet    (Minute)-    (Full Time)-    (Half Time)-    (Extra Time)-    (Penalties)-    (Home Yellow Cards)-    (Home Red Cards)-    (Away Yellow Cards)-    (Away Red Cards)-    (Scorers)-',
                          'Liga' => 'Country_League: ARGENTINA_AG'
                         ),

                    Array( 'Podaci' => '(No)003/151    (GMT + 2h,Start at)21:30    (Home Team)HURACAN TRES ARROYOS    (Away Team)ALMAGRO    (Status)NotStartYet    (Minute)-    (Full Time)-    (Half Time)-    (Extra Time)-    (Penalties)-    (Home Yellow Cards)-    (Home Red Cards)-    (Away Yellow Cards)-    (Away Red Cards)-    (Scorers)-',
                           'Liga' => 'Country_League: ARGENTINA_AG'
                         )
                );


switch(@$_GET['action']) {
  case 'list':
    $liga = urldecode($_GET['liga']);
    for($i=0; $i<count($rezultati); $i++) {
      if($rezultati[$i]["Liga"] = $liga) {
        echo $rezultati[$i]["Podaci"].'<br /><br />';
      }
    }
  break;
  default:
    $lige = array();
    for($i=0; $i<count($rezultati); $i++)
      $lige[] = $rezultati[$i]['Liga'];
    $lige = array_unique($lige);
    sort ($lige);
    reset($lige);
    for ($j=0; $j<count($lige); $j++)
      echo '<a href="'.$_SERVER['PHP_SELF'].'?action=list&liga='.urlencode($lige[$j]).'">'.$lige[$j].'</a>';
  break;
}


E sad ti umesto:
Code:
echo $rezultati[$i]["Podaci"].'<br /><br />';


Parsiraj $rezultati[$i]["Podaci"] i prikazi ono što ti je potrebno