3

私のコードには次のものがあります。

 $my_count = count($total_elements[$array_object]);

$my_countの要素数が含まれるようになりました$total_elements[$array_object]。この数値を対応する自然数 (0、1、2、...) に変換したい

この特定のケースでは、 5 つの数字しかありません

$numbers  = array(
    2  => 'two',
    3  => 'three',
    4  => 'four',
    5  => 'five',
    6  => 'six',
);

特定の配列の要素数を取得しecho、対応する自然数 (人間が読める数) を配列から取得する方法は? またはさらに良い - これを行うためのより良い方法はありますか?

(私はちょうどそれを行うためのいくつかの関数またはクラスを見つけました - しかし今、それらは私が今必要としている単純なケースにはあまりにも肥大化しています)

さて、もちろん、私はこれを行うことができます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()

4

5 に答える 5

6

Pear には、number words のパッケージがあります。これをチェックしてください梨 Number_word

$numbers = new Number_Words();
echo $number->toWords(200);

それはあなたを助けるでしょう

編集

PHP でNumberFormatterクラスを使用できます。

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

「Two Hundred」を出力します

于 2013-12-01T05:59:58.023 に答える
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_WordsPEAR クラスを見てください。

于 2013-12-01T05:49:50.207 に答える
2

PEAR Numbers_Words パッケージは、数字を単語で綴るメソッドを提供します。

参照:

梨: 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
于 2013-12-01T06:02:30.027 に答える