webForumDet fria alternativet

Roten ur

PHP

5 svar · 704 visningar · startad av donkey

Medlem sedan jan. 2004179 inlägg
Frågan#1

Har en variabel ($antal) som jag skulle vilja ta ruten ur och se om svaret är ett heltal och på något sätt integrera det i en if-sats, ex

om roten ur $antal är ett heltal visas 'Ok' annars visas 'Fel'.
Har klurat fram och tillbaka, men får inte riktigt till det, förslag?

Edit: Okej, roten ur får jag med hjälp av sqrt(), men problemet kvarstår hur jag ska se om detta är ett heltal eller inte...

Medlem sedan mars 2004485 inlägg
#2

Jag kan inget om PHP men jag gissar:

Använd denna funktion för att räkna ut roten:
http://se2.php.net/manual/en/function.sqrt.php

Och denna för att kolla resten när du delar med 1(edit: ska vara lika med 0):
http://se2.php.net/manual/en/function.fmod.php

Medlem sedan jan. 2004179 inlägg
#3

jag var mer inne på funktionen is_int... någon annan som vet?

Fortsätter prova mej fram... :p

Medlem sedan aug. 20002 975 inlägg
#4

is_int() ger sant på 1 men falskt på '1', så jag skulle rekommendera ett regexp:

if (preg_match("/^[1-9][0-9]*$/", $var)) {
   // Är heltal
}
Medlem sedan mars 2004485 inlägg
#5

Du måste väl använda en variabel som inte är en Integer för att ta roten ur på den, annars så får du alltid heltal som svar (om det finns en sån roten ur funktion). Jag tror inte att det omvandlas till en heltals variabel bara för att dess värde är ett heltal.

Så här tänker alltså jag: (edit funkar, jag lyckades testa :) )

<?php
$x = 9;
if (fmod(sqrt($x), 1) == 0) {
   echo "True";
} else {
   echo "False";
}
?>

edit: Det funkade inte med %

Medlem sedan jan. 2004179 inlägg
#6

kung Matte! Fungerar klockrent, tack!

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)