<?php
class NumberQuantifier {
protected $quantifierList;
public function __construct($quantifierList) {
$this->quantifierList = $quantifierList;
arsort($this->quantifierList); }
public function quantify($number) {
foreach ($this->quantifierList as $symbol => $threshold) {
if ($threshold > $number) continue;
}
}
}
$metricMassQuantifier = new NumberQuantifier
(array( 'Mg' => 1000000, //megagram
'kg' => 1000, //kilogram
'hg' => 100, //hectogram
'dag' => 10, //decagram
'g' => 1, //gram
'dg' => 1/10, //decigram
'cg' => 1/100, //centigram
'mg' => 1/1000, //millgram
'mcg' => 1/10000000 //microgram
));
$imperialMassQuantifier = new NumberQuantifier
(array( 'gr' => 1/7000, //grain
'dr' => 1/256, //drachm
'oz' => 1/16, //ounce
'lb' => 1, //pound
'st' => 14, //stone
'qtr' => 28, //quarter
'cwt' => 112, //hundredweight
't' => 2240 //ton
));
echo "Metric: {$metricMassQuantifier->quantify(456)} \r\n";
echo "Imperial: {$imperialMassQuantifier->quantify(456)} \r\n";
PD9waHAKCmNsYXNzIE51bWJlclF1YW50aWZpZXIgewoJcHJvdGVjdGVkICRxdWFudGlmaWVyTGlzdDsKCQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRxdWFudGlmaWVyTGlzdCkgewoJCSR0aGlzLT5xdWFudGlmaWVyTGlzdCA9ICRxdWFudGlmaWVyTGlzdDsKCQlhcnNvcnQoJHRoaXMtPnF1YW50aWZpZXJMaXN0KTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHF1YW50aWZ5KCRudW1iZXIpIHsKCQlmb3JlYWNoICgkdGhpcy0+cXVhbnRpZmllckxpc3QgYXMgJHN5bWJvbCA9PiAkdGhyZXNob2xkKSB7CgkJCWlmICgkdGhyZXNob2xkID4gJG51bWJlcikgY29udGludWU7CgkJCQoJCQlyZXR1cm4gbnVtYmVyX2Zvcm1hdCgkbnVtYmVyIC8gJHRocmVzaG9sZCwgMSkgLiAkc3ltYm9sOwoJCX0KCX0KfQoKJG1ldHJpY01hc3NRdWFudGlmaWVyID0gbmV3IE51bWJlclF1YW50aWZpZXIoYXJyYXkoCiAgICAnTWcnICA9PiAxMDAwMDAwLCAgICAvL21lZ2FncmFtCiAgICAna2cnICA9PiAxMDAwLCAgICAgICAvL2tpbG9ncmFtCiAgICAnaGcnICA9PiAxMDAsICAgICAgICAvL2hlY3RvZ3JhbQogICAgJ2RhZycgPT4gMTAsICAgICAgICAgLy9kZWNhZ3JhbQogICAgJ2cnICAgPT4gMSwgICAgICAgICAgLy9ncmFtCiAgICAnZGcnICA9PiAxLzEwLCAgICAgICAvL2RlY2lncmFtCiAgICAnY2cnICA9PiAxLzEwMCwgICAgICAvL2NlbnRpZ3JhbQogICAgJ21nJyAgPT4gMS8xMDAwLCAgICAgLy9taWxsZ3JhbQogICAgJ21jZycgPT4gMS8xMDAwMDAwMCAgLy9taWNyb2dyYW0KKSk7CgokaW1wZXJpYWxNYXNzUXVhbnRpZmllciA9IG5ldyBOdW1iZXJRdWFudGlmaWVyKGFycmF5KAogICAgJ2dyJyAgPT4gMS83MDAwLCAvL2dyYWluCiAgICAnZHInICA9PiAxLzI1NiwgIC8vZHJhY2htCiAgICAnb3onICA9PiAxLzE2LCAgIC8vb3VuY2UKICAgICdsYicgID0+IDEsICAgICAgLy9wb3VuZAogICAgJ3N0JyAgPT4gMTQsICAgICAvL3N0b25lCiAgICAncXRyJyA9PiAyOCwgICAgIC8vcXVhcnRlcgogICAgJ2N3dCcgPT4gMTEyLCAgICAvL2h1bmRyZWR3ZWlnaHQKICAgICd0JyAgID0+IDIyNDAgICAgLy90b24KKSk7CgplY2hvICJNZXRyaWM6IHskbWV0cmljTWFzc1F1YW50aWZpZXItPnF1YW50aWZ5KDQ1Nil9IFxyXG4iOwplY2hvICJJbXBlcmlhbDogeyRpbXBlcmlhbE1hc3NRdWFudGlmaWVyLT5xdWFudGlmeSg0NTYpfSBcclxuIjs=