我的代码中有以下内容:
$my_count = count($total_elements[$array_object]);
$my_count
现在包含$total_elements[$array_object]
中的元素数量。我想将这个数字转换成相应的自然数(零,一,二,......)
在这种特定情况下,我只有5个数字:
$numbers = array(
2 => 'two',
3 => 'three',
4 => 'four',
5 => 'five',
6 => 'six',
);
如何检索给定数组中的元素数量,然后echo
从数组中获取相应的自然数(人类可读数字)?或者更好 - 有更好的方法吗?
(我已经找到了一些functions或classes来做到这一点 - 但现在对于我现在需要的简单案例而言,这些太过臃肿了)
现在,我当然可以使用switch()
:
switch ($my_count) {
case 0:
echo "zero";
break;
case 1:
echo "one";
break;
case 2:
echo "two";
break;
// etc...
}
但它看起来对我来说并不优雅。如果一个人的数字超过10个,那也很愚蠢。
我确信有更优雅的方式来实现这一点,即使现在我只有5个数字,我希望在其他情况下有一些功能可以重复使用。
(我很抱歉,如果这是一个愚蠢的问题 - 但是 - 在SE或Google上搜索关键字PHP
- words
和count()
我只找到与计算单词相关的答案字符串)
答案 0 :(得分:6)
梨有一个数字的包装。 看看pear Number_word
$numbers = new Number_Words();
echo $number->toWords(200);
它会帮助你
编辑
您可以在php中使用NumberFormatter类。
$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);
echo $f->format(200);
输出“Two Hundred”
答案 1 :(得分:5)
如果您只需要检索5个数字,那么当前的方法很好。创建一个关联数组,其中包含数字作为键,相应的单词作为值:
$numberArray = array(
0 => 'zero',
1 => 'one',
2 => 'two',
3 => 'three',
4 => 'four',
5 => 'five',
6 => 'six',
// ...
);
现在,要检索与$my_count
对应的字词:
$my_count = 2;
echo $numberArray[$my_count]; // => two
您可以选择在尝试isset()
之前检查是否使用echo
定义了索引。这种方法适用于最多10个数字。但是,这显然不适用于更大的数字,因为它需要更复杂的规则。要创建一个在10或20行代码中执行此操作的函数并不容易。我建议您使用现有的解决方案,而不是尝试从头创建一个。看看Number_Words
PEAR class。
答案 2 :(得分:4)
如果它只是少数几个:
$number = count($yournameit);
$count_words = array( "zero", "one" , "two", "three", "four" );
echo $count_words[$number];
答案 3 :(得分:3)
使用内置的php函数没有快速简便的方法来实现这一点,但你可以使用这个梨包来实现这一点:http://pear.php.net/package/Numbers_Words
答案 4 :(得分:2)
PEAR Numbers_Words包提供了用单词拼写数字的方法。
参考:
PEAR:http://pear.php.net/package/Numbers_Words
PECL:http://php.net/manual/en/numberformatter.format.php
实施例
echo number_to_word( '2281941596' );
//Sample output - number_to_word
Two Billion, Two Hundreds Eighty One Million, Nine Hundreds Forty One Thousand and Five Hundreds Ninety Six
//Sample output - PEAR Class
two billion two hundred eighty-one million nine hundred forty-one thousand five hundred ninety-six