Php-返回count(),单位为words

Php-返回count(),单位为words,php,count,words,human-readable,Php,Count,Words,Human Readable,我的代码中包含以下内容: $my_count = count($total_elements[$array_object]); $my\u count现在包含$total\u elements[$array\u object]中的元素数。我想把这个数转换成它对应的自然数(零,一,二,…) 在这种情况下,我只有5个数字: $numbers = array( 2 => 'two', 3 => 'three', 4 => 'four', 5

我的代码中包含以下内容:

 $my_count = count($total_elements[$array_object]);
$my\u count
现在包含
$total\u elements[$array\u object]
中的元素数。我想把这个数转换成它对应的自然数(零,一,二,…)

在这种情况下,我只有5个数字:

$numbers  = array(
    2  => 'two',
    3  => 'three',
    4  => 'four',
    5  => 'five',
    6  => 'six',
);
如何检索给定数组中的元素数,然后从数组中检索相应的自然数(人类可读数)?或者更好——有没有更好的方法

(我已经找到了一些解决方案,但现在对于我现在需要的简单案例来说,这些方案过于臃肿了)

现在,我当然可以使用
switch()

但在我看来它太不优雅了。如果一个人有10个以上的数字,那也是相当愚蠢的

我相信有一种更优雅的方法可以实现这一点,尽管现在我只有5个数字,但我希望有一些功能可以在其他情况下重复使用


(如果这是一个愚蠢的问题,我很抱歉-但是-在SE或Google上搜索关键字
PHP
-
words
count()
我只找到了与计算字符串中的单词相关的答案)

如果您只需要检索5个数字,当前的方法很好。创建一个关联数组,其中包含作为键的数字和作为值的相应单词:

$numberArray  = array(
    0  => 'zero',
    1  => 'one',
    2  => 'two',
    3  => 'three',
    4  => 'four',
    5  => 'five',
    6  => 'six',
    // ...
);
现在,要检索与
$my\u count
对应的单词:

$my_count = 2;
echo $numberArray[$my_count]; // => two

您可以选择先使用
isset()
检查索引是否已定义,然后再尝试
echo
它。这种方法适用于最多10个数字。然而,这显然不适用于较大的数字,因为它需要更复杂的规则。要创建一个只需10或20行代码就能完成这一任务的函数并不容易。我建议您使用现有的解决方案,而不是尝试从头开始创建一个解决方案。看一看。

使用内置php函数没有快速简便的方法来实现这一点,但是您可以使用这个pear包来实现:

如果它只是一个少数数字:

$number = count($yournameit);
$count_words = array( "zero", "one" , "two", "three", "four" );
echo $count_words[$number];

梨有一个数字字的包装。 看看这个

它会帮助你的

编辑

您可以在php中使用类

$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);  
echo $f->format(200);

它将输出“两百”

PEAR Numbers\u Words软件包提供了拼写单词中数字的方法

参考:

梨:

PECL:

例如:


我想你理解错了。。我确实想要
count()
,但我想以一种人类可读的方式输出结果。这是在原始问题中声明的。谢谢。事实上,它更优雅,我已经将@w00d answer改编为使用我的(关联)数组。但由于我已经使用了
w00d
答案,我不想取消接受它。然而,我非常感谢这里善良的人们的帮助:-)。这些答案总是留给将来参考(这就是SE的全部内容)。再次感谢这看起来像是OP已经展示了它的样子,带有移动的索引-尽管它缺少“五”和“六”。(我仍然在投票,因为它显示了如何使用上述查找。)OP说他不知道如何使用。。所以这里它是如此简单,我很尴尬-我想我累了(仍然,这个问题有3张反对票是奇怪的)。+1谢谢,我看到了,但当前服务器不支持:-(谢谢-由于服务器限制无法使用:-)(+1
$numbers = new Number_Words();
echo $number->toWords(200);
$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);  
echo $f->format(200);
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