eregi Posted December 30, 2007 Report Share 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 Link to comment Share on other sites More sharing options...
andrisp Posted December 30, 2007 Report Share 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. Link to comment Share on other sites More sharing options...
marcis Posted December 30, 2007 Report Share Posted December 30, 2007 ... echo is_numeric($data['video'][12) ? "ir skaitlisks" : "nav skaitlisks"; ... domā tā, vai tur slēpjas cits domu grauds? Link to comment Share on other sites More sharing options...
eregi Posted December 30, 2007 Author Report Share 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]; Link to comment Share on other sites More sharing options...
andrisp Posted December 30, 2007 Report Share Posted December 30, 2007 Nez, tāpat neiebraucu, ko tu mēģini panākt. Vienīgais, varu piebalsot marcim - izmanto is_numeric. Link to comment Share on other sites More sharing options...
andrisp Posted December 30, 2007 Report Share 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. Link to comment Share on other sites More sharing options...
bubu Posted December 30, 2007 Report Share Posted December 30, 2007 if ($pirmaa_veertiiba == "video" && is_numeric($otraa_veertiiba)) { echo "ir numeraals"; } Link to comment Share on other sites More sharing options...
eregi Posted December 30, 2007 Author Report Share 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.... Link to comment Share on other sites More sharing options...
andrisp Posted December 30, 2007 Report Share Posted December 30, 2007 Nu vismaz viens if vai ternaarais operaators buus obligaati vajadziigs. Link to comment Share on other sites More sharing options...
bubu Posted December 30, 2007 Report Share 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)) { // ... } Link to comment Share on other sites More sharing options...
Lynx Posted December 30, 2007 Report Share 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 } Link to comment Share on other sites More sharing options...
blackhalt Posted December 30, 2007 Report Share Posted December 30, 2007 Te tādā pārdoma: <?php if(is_numeric('+0123.45e6')){ echo 'jā'; }else{ echo 'nē'; } ?> Link to comment Share on other sites More sharing options...
Lynx Posted December 31, 2007 Report Share 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. Link to comment Share on other sites More sharing options...
Aleksejs Posted December 31, 2007 Report Share 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. Link to comment Share on other sites More sharing options...
bubu Posted December 31, 2007 Report Share 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. Link to comment Share on other sites More sharing options...
Recommended Posts