eregi Posted December 30, 2007 Report Posted December 30, 2007 (edited) man vajadzētu ar array palīdzību padot kādu vērtību, ja rezultāts ir numerāls, piem - $dara = Array ( 'video' => Array ( is_numeric => 'ir numeraals', )); echo $dara[video][12]; doma tāda, ka es padodu caur $dara divas vērtības 1) 'video' 2) kaut kādu skaitli un vajag tā, ja pirmā vērtība ir video, bet otrā ir skaitliska, tad atgriezt 'ir numeraals', vnk īsti nezinu ar, ko iekš array varētu noteikt, vai ir skaitliska vērtība. Ceru, ka tagad saprati, man te vnk sākumā sanāca samuhņīt kko netā. (: Edited December 30, 2007 by eregi
andrisp Posted December 30, 2007 Report Posted December 30, 2007 Neko nesapratu. Kas ir "rez" ("ja rez ir numerāls") ? Kas ir "pirmā vērtība" un "2 vērtība" ? Paskaidro vēlreiz, tikai izlasi pats pirms posto.
marcis Posted December 30, 2007 Report Posted December 30, 2007 ... echo is_numeric($data['video'][12) ? "ir skaitlisks" : "nav skaitlisks"; ... domā tā, vai tur slēpjas cits domu grauds?
eregi Posted December 30, 2007 Author Report Posted December 30, 2007 Nē, Mārci, slēpjās cits domu grauds, piem $dara = Array ( ja pirmā vērtība ( video ) ir video => Array ( ja otrā vērtība (12) ir skaitlis => 'ir numeraals', )); echo $dara[video][12];
andrisp Posted December 30, 2007 Report Posted December 30, 2007 Nez, tāpat neiebraucu, ko tu mēģini panākt. Vienīgais, varu piebalsot marcim - izmanto is_numeric.
andrisp Posted December 30, 2007 Report Posted December 30, 2007 Nu kad ģenerē to masīvu, tad arī veic pārbaudes. Kur problēma ? Iekš masīva tu nekādu loģiku neiedabūsi.
bubu Posted December 30, 2007 Report Posted December 30, 2007 if ($pirmaa_veertiiba == "video" && is_numeric($otraa_veertiiba)) { echo "ir numeraals"; }
eregi Posted December 30, 2007 Author Report Posted December 30, 2007 vēlējos pēc parauga uzmočīt, ko katrs dara webā $PAGES = array ( 'news.php' => 'lasa ziņas', 'archive.php' => 'skatās arhīvu' ); bet gadās, kad vie adrese ir piem /video/22 tad es vēlējos pēc šī parauga uztaisīt tā, ja tā otrā vērtība (22) ir skaitliska tad atgriez 'ir skaitlisks', bet laikam nāksies iztikt ar ifiem....
andrisp Posted December 30, 2007 Report Posted December 30, 2007 Nu vismaz viens if vai ternaarais operaators buus obligaati vajadziigs.
bubu Posted December 30, 2007 Report Posted December 30, 2007 Joprojām nesaprotu, ko tu gribi ar to masīvu darīt? Izvadīt to ir/nav numeric tikai tad, ja pirmā vērtība ir masīvā? if (in_array($pirmaa_veertiiba, $PAGES) && is_numeric($otraa_vert)) { // ... }
Lynx Posted December 30, 2007 Report Posted December 30, 2007 Imho, pēc viņa pirmā posta un tālākā parauga ar friendly urls viņš domā šādi: $data= explode("/", $url); //$url mainigais, kur tev glabajās apstrādāts $_SERVER['QUERY_STRING'] if(in_array($data[0],$pages) && is_numeric($data[1])) //uzreiz paņemam vērtības no masīva { echo 'ir skaitlis'; } Manuprat kaut kā neloģiski, es šādā gadijumā rīkotos šādi: $pages = array('video','archive'); if(in_array($data[0],$pages)) { include($data[0].'php'); } //un tagad ieksh video.php if(isset($data[1]) && is_numeric($data[1])) { //izvelkam info ierakstam ar id 22 } else { //defaultaa lapa, kur atrodas visu video saraksts vai errors, ka nav defineets id }
blackhalt Posted December 30, 2007 Report Posted December 30, 2007 Te tādā pārdoma: <?php if(is_numeric('+0123.45e6')){ echo 'jā'; }else{ echo 'nē'; } ?>
Lynx Posted December 31, 2007 Report Posted December 31, 2007 Hmm, interesanti, blackhalt, šo te ir kādā veidā iespējams exploitot, vai arī tas ir vienkārši ļoti liels skaitlis citā pierakstā? Teorētiski jau pēc noteikšanais vai is_numeric sql kverijam tiek lietots real_escape_string un datubāze neatgriezīs nevienu ierakstu, jo tāds id neeksistē. Bet nu es to is_numeric izmantoju pilnīgi visos projektos pie $_GET['id'] pārbaudēm.
Aleksejs Posted December 31, 2007 Report Posted December 31, 2007 tas ir decimāl[daļ]skaitļa pieraksts ar mantisu: http://en.wikipedia.org/wiki/Significand http://en.wikipedia.org/wiki/Scientific_notation http://lv.php.net/manual/en/language.types.float.php Bet vai Tev tiešām vajag decimāldaļskaitli, vai tomēr veselu skaitli? es parasti daru kaut ko šādu priekš veseliem skaitļiem: if($_GET['skaitlis']==intval($_GET['skaitlis'])){ //jā, ir korekts vesels skaitlis } else { //nē, nav korekts vesels skaitlis } Tos id tak pats rakstīsi, tādēļ jāaizliedz pieņemt jebkāda cita formāta pieraksti.
bubu Posted December 31, 2007 Report Posted December 31, 2007 +0123.45e6 ir ļoti normāls skaitlis (lai gan ne integer tipa, tiesa). Pārvērsts uz integer tas būs 123450000. Tā ka ja to lietosi atlasē pēc kautkāda ID lauka, tad jau viss būs kārtībā. Ja tiešām gribās atļaut tikai integer tipa skaitļus, tad var lietot vienkāršu regexpu - [1-9][0-9]* Es vienmēr biju lietojis http://php.net/intval Tiesa, tas arī atļaus iepriekšējo skaitli, bet to gan pārvērtīs par 123. Toties outputā tā piespiedu kārtā skaitli pārvērš par integer tipa. Tāpat tā is_numeric funkcija atļaujs ieejā skaitļus hex pierakstā - is_numeric("0xDEADBEEF") == true.
Recommended Posts