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
Co použít spíš něco jako:
$pole = array('jablko' => 'cervene', 'hruska' => 'mala', 'traktor-zetor' => '211', 'pepa' => '56', 'go' => '897');
Podmínky jsou potom triviální 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
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 *
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
lojza:
Tak to udělej jak dvourozměrné pole:
array(
  "go" => array(
    "2",
    "659888",
    "25444",
    …
  ),
  …
)
lojza
Profil *
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
Tak použij odříznutí od posledního spojovníku, jak jsem ti už napsal, ne?
Tori
Profil
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 *
Tori:
Aha, to jsem hned nepochopil.. tim se ovšem vysvětluje použití té funkce... Díky

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