2009-10-29 6 views
2

Je veux obtenir les chiffres simples à deux chiffres. Par exemple, si 36 j'ai besoin de stocker 3 et 6 dans différentes variables.Est-ce possible?comment puis-je obtenir des chiffres à partir des deux chiffres?

+2

Le premier chiffre est 'x/10 - (x% 10)/10' et seconde est' x 10'% – Amarghosh

+0

Vous avez déjà reçu beaucoup de solutions valides, valables pour deux chiffres seulement. Est-ce suffisant pour vous tous que vous aimeriez rendre l'algorithme générique pour n chiffres? –

Répondre

7

vous résolvez cela avec les mathématiques simples.

Tout d'abord, pensez à ce que 36 est vraiment, si vous le décomposer, c'est 3 * 10 + 6, non?

Ainsi, le premier chiffre dans ce cas représente votre temps 10, que vous obtiendrez en divisant par 10:

36/10 = 3.xxxxx 

Maintenant, si vous arrondissez que vous obtenez 3, qui est le premier chiffre.

Et pour le reste? Eh bien, pour cela, vous devez utiliser quelque chose appelé modulo, ce qui peut être difficile à comprendre quelques fois. Mais la basilique supprime les overs de gauche d'une division entière. IT bascily signifie que lorsque vous faites 36 % 10 vous obtenez 6. Pourquoi est-ce que vous pourriez penser? Essayez d'ouvrir une calculatrice et appuyez sur les chiffres: 36/10 = 3.6, les restes sont de 6!

Code Solution

<?php 
    $theNumber = 36; 

    $first = floor($theNumber/10); 

    $second = $theNumber % 10;  
?> 

Vous pouvez regarder dans la fonction floor here.

Solution alternative pour les chaînes de fractionnement

Si vous êtes à la recherche d'autres façons de diviser les chaînes en PHP vous pouvez utiliser str_split, cela vous donnera un array de caractères.

Exemple

<?php 
    $myString = "36 is my number"; 

    $splittedString = str_split($myString); 

    echo $splittedString[0]; 
    echo $splittedString[1]; 
?> 

simplement utiliser que comme une array

+2

36% 6 n'est pas égal à 6. C'est 0! 36% 10 est égal à 6. –

+0

Ops, mon erreur. Pardon! :) –

+1

Votre solution "alternative" est évidemment la meilleure. Il n'y a pas besoin de maths du tout. Avec le typage faible de PHP, vous pouvez utiliser des fonctions de manipulation de chaînes sur des entiers sans problèmes. Ils travaillent pour n chiffres, au lieu de seulement 2, et sont probablement plus rapides aussi bien. – Duroth

0

Ce n'est pas du code PHP !! (N'a pas vu le tag)

int num = 36; 
int first = num/10; // 3 
int second = num % 10; // 6 
+0

Et depuis quand le code PHP a-t-il ressemblé à ça? –

+0

Ne sois pas si dur - parfois les tags me manquent aussi! – RichardOD

+0

Oups! Désolé, je n'ai pas vu l'étiquette. : - \ –

1

De cette façon:

$int = 36; 
$str = (string)$int; 
var_dump($str[0], $str[1]); 
+0

Quel est le problème avec ma solution? J'ai juste utilisé le potentiel php au lieu de moduler: P ... et pour les nombres plus longs, c'est nettement plus facile que de diviser/moduler en cycle. –

+0

Merci à tout le monde ... Maintenant, j'ai seulement le Netconnection ... Et maintenant j'ai eu la réponse .. Merci beaucoup – svk

1

One of the ways:

// Accessing single characters in a string 
// can also be achieved using "square brackets" 
$string = 'abcdef'; 
echo $string[0];     // a 
echo $string[3];     // d 
echo $string[strlen($string)-1]; // f 
+0

Sérieusement, c'est vraiment moche pour ce qu'il veut faire. –

+0

@Filip pas que vous – TigerTiger

+0

Merci à tout le monde ... Maintenant, j'ai seulement le Netconnection ... Et maintenant j'ai eu la réponse .. Merci beaucoup – svk

1

Une chaîne peut être consulté dans un tableau.Si vous convertissez votre numéro à une chaîne (ou si elle est déjà un - vous ne mentionnez pas), vous pouvez vous adresser les chiffres individuellement puis éventuellement les reconvertir en entiers:

$num = strval(36); 

echo intval($num[0]); // 3 
echo intval($num[1]); // 6 
+0

Pourquoi convertir une chaîne en tableau alors que vous pouvez accéder à des caractères car ce serait déjà un tableau? –

+0

Excellent point - J'ai mis à jour ma réponse. – drewm

+0

Merci à tout le monde ... Maintenant, j'ai seulement la Netconnection ... Et maintenant j'ai eu la réponse .. Merci beaucoup – svk

3

essentiellement

"string" chemin

$s = (string) $i; 
$one = $s[0]; 
$two = $s[1]; 

"mathématique" voie

$two = $i % 10; 
$one = ($i - $two)/10; 
+0

Merci à tout le monde ... Maintenant, j'ai seulement la connexion Net ... Et maintenant j'ai eu la réponse. .Merci beaucoup – svk

Questions connexes