Php - 以单词形式返回count()

时间:2013-12-01 05:46:48

标签: php count words human-readable

我的代码中有以下内容:

 $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从数组中获取相应的自然数(人类可读数字)?或者更好 - 有更好的方法吗?

(我已经找到了一些functionsclasses来做到这一点 - 但现在对于我现在需要的简单案例而言,这些太过臃肿了)

现在,我当然可以使用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 - wordscount()我只找到与计算单词相关的答案字符串)

5 个答案:

答案 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