note 84927 deleted from function.base-convert by danbrown

From: Date: Sat, 02 Jul 2011 01:46:16 +0000
Subject: note 84927 deleted from function.base-convert by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-181156@lists.php.net to get a copy of this message
Note Submitter: mr-bungle sometimes uses TLEN.PL ---- In response to "Ray Paseur sometimes uses GMail" There is part of my class for specified operations on string etc. I've written two methods to convert numbers between roman and arabic notation: <?php class Text { public function Arab2Roman($number) { $out = ''; $translate = array( array('arab' => 5000, 'roman' => ''), array('arab' => 1000, 'roman' => 'M'), array('arab' => 900, 'roman' => 'CM'), array('arab' => 500, 'roman' => 'D'), array('arab' => 400, 'roman' => 'CD'), array('arab' => 100, 'roman' => 'C'), array('arab' => 90, 'roman' => 'XC'), array('arab' => 50, 'roman' => 'L'), array('arab' => 40, 'roman' => 'XL'), array('arab' => 10, 'roman' => 'X'), array('arab' => 9, 'roman' => 'IX'), array('arab' => 5, 'roman' => 'V'), array('arab' => 4, 'roman' => 'IV'), array('arab' => 1, 'roman' => 'I') ); if($number > $translate[0]['arab']) $out = false; else { $j = count($translate)-1; for($i=0;$i<$j;$i++) { if($number < $translate[$i]['arab'] && $number >= $translate[$i+1]['arab']) { $out .= $translate[$i+1]['roman']; $number -= $translate[$i+1]['arab']; if($number) $out .= Text::Arab2Roman($number); // do it recursive until $numer is not 0 break; } } } return ($out); } public function Roman2Arab($roman) { $out = 0; $translate = array( 'M' => 1000, 'D' => 500, 'C' => 100, 'L' => 50, 'X' => 10, 'V' => 5, 'I' => 1 ); $j = strlen($roman); for($i=0; $i<$j; $i++) { $out += $translate[$roman[$i]]; // find wrong order of roman chars if($i < $j-1 && $translate[$roman[$i]] < $translate[$roman[$i+1]]) { $out -= 2*$translate[$roman[$i]]; } } return ($out); } } ?>

« previous php.notes (#181156) next »