Autor Zpráva
Lukáš567
Profil *
Zdravím,

mám taký problém, potrebujem overiť či sa určitý string nachádza v jednoduchom poli:

$array= 
"abc,
abcd,
abcde,
abcdef";

$a=explode(',', $array);

foreach($xml as $key) {
         $code = $key->CODE;
          if (in_array($code, $a)) {
          $title = $key->TITLE;
         $popis = $key->POPIS;
         echo $title.";".$code.";".$popis."<br>";
         }
         }

Mám v tom XML načítaných cca 1000 riadkov,a ked dám podmienku IF preč, tak sa všetky pekne vypíšu pod seba, takže tam problém nieje, ale ked chcem, aby predtým než vypíše nejaký riadok, overilo či sa nachádza v array tá hodnota code, z toho konkrétneho riadku, tak vždy vypíše iba jeden riadok, a to ten s code abc, a nič viac. Pritom medzi tými 1000 riadkami sú obsiahnuté aj riadky obsahujúce všetky ostatné polia z array. Takže po správnosti by malo vypísať pod seba 4 riadky. Nechápem prečo mi to nefunguje.

Ďakujem vopred za pomoc.


Proste vždy sa skontroluje len pre to prvé pole z array. Ked prehodím poradie a dám prvú v array napr. "abcde" tak vypíše korektný riadok ktorý obsahuje abcde, ale zase tie ostatné nie.
Chro
Profil
Máš chybu v zápisu pole. Správný zápis je
$array = array(
"abc",
"abcd",
"abcde",
"abcdef"
);



Sory, blbost, beru zpět. Jak ten řetězec exploduješ podle čárky, tak u některých hodnot zůstávají i zlomy řádků, protože ty hodnoty v řetězci máš zapsány pod sebou. A je rozdíl mezi abcd a abcd se zlomem řádku.
Bertram
Profil
Lukáš567:

$array= 
"abc,
abcd,
abcde,
abcdef";
 
$a=explode(',', $array);

var_dump($a);
array(4) { [0]=> string(3) "abc" [1]=> string(6) " abcd" [2]=> string(7) " abcde" [3]=> string(8) " abcdef" }

Takže buď takto,
$array= "abcabcd,abcde,abcdef";
nebo
in_array($code, trim($a))
Tori
Profil
Bertram:
in_array($code, trim($a))
Trim asi nebude fungovat na pole, to už spíš in_array($code, array_map('trim', $a));
peta
Profil
Chro: Nn, rikas pravdu, ma chybu v zapise pole. Kdyz exploduje viceradkovy string, tak mu tam zustane zalozmeni radku. Viz Bertram, ktery mu to dokazal pres var_dump($a);.
Spravne by tam melo byt $a=explode(",\n", $array);

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: