Autor | Zpráva | ||
---|---|---|---|
lojza Profil * |
Ahoj, mám následující pole
$pole = array('jablko-cervene', 'hruska-mala', 'traktor-zetor-211', 'pepa-56', 'go-897'); // potrebuji dostat 897 $pole = array('pomeranc', 'krava', 'skoda-55', 'go-a347'); // potrebuji dostat 0 jelikoz za pomlckou go-a347 není jen číslo!! $pole = array('meloun-vodni', 'banan', '585-kol', 'mlady-jakub', 'go-877'); // potrebuji dostat a potřeboval bych, abych nějak zjistit hodnotu z pole u proměnné go, pokud je za pomlčkou jen číslo tak rátit číslo, pokud je za pomlčkou cokoliv jiného než číslo nebo v kombinaci s číslem vrátit 0 Co vím je, že proměnná go může být vždy jen v poli jako poslední hodnota kdybych uměl programovat asi bych to řešil takto if(existence hodnoty go-[cokoliv]){ echo 'neexistuje žádná taková hodnota v poli'; }else{ echo 'existuje taková hodnota v poli'; $hodnota_existuje = true; } if($hodnota_existuje === true){ if(zjištění jestli hodnota za pomlčkou obsahuje jen číslo go-[0-9] ){ echo 'hodnota go obsahuje za pomlčkou pouze číslo'; }else{ echo 'hodnota go neobsahuje za pomlčkou pouze číslo'; // chyba!! exit; } } Najde se nějaký zkušený a dosadil mi prosím ty 2 podmínky? Předem moc děkuji |
||
Str4wberry Profil |
#2 · Zasláno: 12. 11. 2011, 15:29:25
Co použít spíš něco jako:
$pole = array('jablko' => 'cervene', 'hruska' => 'mala', 'traktor-zetor' => '211', 'pepa' => '56', 'go' => '897'); isset($pole['go']) a is_numeric($pole['go']) .
Pokud si trváš na svém (na první pohled hloupém) postupu, číslo získáš pomocí: $zCeho = $pole[číslo indexu]; $cislo = substr($zCeho, strrpos($zCeho, '-') + 1); |
||
Tori Profil |
#3 · Zasláno: 12. 11. 2011, 15:30:52
lojza:
Hodnotu posledního prvku pole získáte: $hodnota = $pole[count($pole)-1]; // nebude fungovat na asoc.pole, anebo $hodnota = array_pop($pole); // funguje i pro asoc.pole, ale taky ten poslední prvek z pole odstraní Na ověření hodnoty je při tomto zadání asi lepší odseknout z té hodnoty vše od 4.znaku do konce (substr) a pak to ověřit pomocí is_numeric (nebo převést na číslo pomocí intval - rozdíl je reakci na písmena za číslicemi: intval("23něco") je 23, ale is_numeric("23něco") je false). |
||
lojza Profil * |
#4 · Zasláno: 12. 11. 2011, 15:41:19
Tori:
„lepší odseknout z té hodnoty vše od 4.znaku do konce“ To je přece nesmysl, ne? go může být třeba go-2, go-659888, go-25444 atd.. Díky |
||
Radek9 Profil |
#5 · Zasláno: 12. 11. 2011, 16:05:44
lojza:
Tak to udělej jak dvourozměrné pole: array( "go" => array( "2", "659888", "25444", … ), … ) |
||
lojza Profil * |
#6 · Zasláno: 12. 11. 2011, 16:18:08
Radek9:
No to by bylo jednodušší, ale není to možné, to pole je již pevně dané a nelze měnit, jedná se totiž o pole $_GET ;) Tori: „pak to ověřit pomocí is_numeric“ Ta funkce is_numeric je v tomto případě taky nevyhovující, jelikož bere jako číslo i -564 Možná bere to lomítko jako zápornou hodnotu, nevím, ale pokud je tam lomítko nebo úplně něco jiného tak potřebuji hodit error ;) |
||
Str4wberry Profil |
#7 · Zasláno: 12. 11. 2011, 16:31:31
Tak použij odříznutí od posledního spojovníku, jak jsem ti už napsal, ne?
|
||
Tori Profil |
#8 · Zasláno: 12. 11. 2011, 17:13:45
lojza:
„To je přece nesmysl, ne? go může být třeba go-2, go-659888, go-25444 atd..“ "od 4.znaku do konce" pro mne znamená "vše mezi 4. a posledním znakem v řetězci (včetně jich obou)". Asi jste to pochopil jako "4.znak, počítáno od konce", ale tak jsem to nemyslela. Ad is_numeric: vždycky se ještě dá použít regulár, samozřejmě. |
||
lojza Profil * |
#9 · Zasláno: 12. 11. 2011, 20:57:14
Tori:
Aha, to jsem hned nepochopil.. tim se ovšem vysvětluje použití té funkce... Díky |
||
Časová prodleva: 14 let
|
0