php - Question d'entretien, convertir les nombres inférieurs à 100 en chinois.
PHP中文网
PHP中文网 2017-06-14 10:50:09
0
6
900

Comment convertir rapidement des nombres en texte
Par exemple, 1 => un, 2=> deux, ..., 15=》quinze
Ce à quoi je pense actuellement, c'est d'enregistrer les caractères chinois dans un tableau

$arr = ['一','二','三','四','五','六','七','八','九','十'];

Mais c'est trop compliqué. Comment convertir les nombres saisis en chinois ?

Le résultat final est le suivant :
Entrée 12
Sortie

一二三四五六七八九十十一十二
PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous (6)
淡淡烟草味
 '一', '2' => '二', '3' => '三', '4' => '四', '5' => '五', '6' => '六', '7' => '七', '8' => '八', '9' => '九', '10' => '十', ); if($number>10){ //倍数 $bs = (int)($number/10); //余数 $ys = $number%10; echo $arr[$bs].$arr[10].$arr[$ys]; }else{ echo $arr[$number]; }
    过去多啦不再A梦

    Si vous pouvez décrire clairement le processus de conversion numérique avec des mots, alors l'écriture de code est un processus de traduction.

    L'algorithme n'est en fait qu'une logique métier avec une logique métier très étrange. L'accent est mis sur l'analyse de cettelogique métier

    .

    Vous pouvez convertir des chiffres arabes en chiffres chinois avant même d'avoir terminé vos études primaires. Vous devez avoir une méthode en tête pour terminer ce processus de conversion. L’objectif de l’enquête ici est donc le processus d’abstractiondu problème. Pour être abstrait et précis, vous devez d’abord avoir une analyse et une compréhension complètes du problème lui-même et découvrir les règles. Dans le processus de conversion numérique, quand 0 est-il appelé dix et quand est-il appelé zéro. Ce processus est si naturel dans l’esprit qu’il nécessite tout de même une certaine capacité à analyser sa situation et à en connaître les règles.

    Je recommande cet article. L'analyse au début de l'article est le processus d'abstraction, qui est très important pour la programmation

      漂亮男人
      $setnumber = 99; $chiNum = array('十','一','二','三','四','五','六','七','八','九','十'); if($setnumber < 100 && $setnumber >= 1) { for($i = 1;$i<=$setnumber;$i++) { $setstrnumber = (string)$i; $count = strlen($setstrnumber); if($count == 1) { echo $chiNum[$i]."
      "; } else { $setchinum = ''; if($setstrnumber[0] != 1) { $setchinum .= $chiNum[$setstrnumber[0]]; } $setchinum .= $chiNum[0]; if(intval($setstrnumber[1]) != 0) { $setchinum .= $chiNum[$setstrnumber[1]]; } echo $setchinum."
      "; } } }
        Ty80

        Comment convertir rapidement des nombres en texte
        Par exemple, 1 => un, 2=> deux, ..., 15=》quinze
        Ce à quoi je pense actuellement, c'est d'enregistrer les caractères chinois dans un tableau

        $arr = ['一','二','三','四','五','六','七','八','九','十'];

        Mais c'est trop compliqué. Comment convertir les nombres saisis en chinois ?

        Le résultat final est le suivant :
        Entrée 12
        Sortie

        一二三四五六七八九十十一十二

        Ce qui suit est la mise en œuvre deJavaScript

        Observez la représentation numérique des caractères chinois

        Les caractères chinois spécifient explicitement l'ordre des nombres. Par exemple,一百零一a l'ordre des centaines (cent, cent, dix, millions)

        .

        2>>>>Deux2>>>>二个
        10>>>>一十>>>>10>>>> > code> >>>>

        16>>>>一十六个>>>>十六

        105>>>>一百零十五个>>>>一百零五

        1024>>>>一千零百二十四个>>>>一千零二十四

        Vous pouvez voir que sa représentation peut être considérée comme la forme de值 + 阶.

        De plus, lorsque les conditions suivantes sont remplies需要省略阶或者值

        10correspond à十十et s'écrit10对应一十写作
        110对应一百一十零个写作一百一十110correspond àcent et tencode> EcritureCent dix
        .... Attendez

        Sur la base de la réflexion ci-dessus, l'idée de programmation qui devrait être tirée est la suivante :

        1. Entrez des chiffresn

        2. Mapn映射到一个数组tokens上。 比如8变成["八"],101变成["一", "零", "一"]à un tableaujetons. Par exemple,8devient["八"],101devient["一", "zero", "一"]

        3. Ajouter un niveau101变成["一", "百", "十", "零", "一", "个"]

        4. Filtre, tel queCent undans la forme la plus simple一百十零一个变成最简形式一百零一

        Fonction outil

        // 数字到汉字的映射表 var mapHans = ['零', '一','二','三','四','五','六','七','八','九','十']; // 用 n 得到汉字 输入 0 得到 '零' var getHans = n => mapHans[n]; // 数字长度到汉字数级的映射表 var mul = ['十', '百', '千', '万'] // ['i', 'love', 'my', 'wife'] >>>> ilovemywife var arr2str = arr => arr.join(''); // 输入 5 产生 [1, 2, 3, 4, 5] var arrGenerator = n => ( new Array(n).fill(0).map((e, idx) => idx + 1) )

        Réalisé

        Première mise en œuvre大于 10数字映射到汉字的数制sur

        Par exemple, saisissez101pour renvoyer101返回一百零一

        Il sera plus rapide d'utiliser la fonction outil écrite ci-dessus

        var toHans = n => { // 比如输入 101 返回 ['一', '零', '一'] var tokens = n.toString().split('').map(getHans); // 对数阶的处理 如果上一步得到 ['一', '零', '一'] // 那么at就是 ['百', '十'] var at = mul.slice(0, tokens.length - 1).reverse(); // 归约 return tokens.reduce((acc, cur) => { acc.push(cur); acc.push( at.shift() ) return acc; // 这个reduce将会把 tokens 和 at 耦合在一块 // ['一', '零', '一'] 和 ['百', '十'] 耦合就是: // ['一', '百', '零', '十', '一', undefined] // 下一步的两个 filter 就是要剔除多余的项 }, []).filter(e => e !== undefined).filter((e, idx, its) => { if (e === '零'){ if (idx === its.length - 1) { // 针对 10 >>>> [一 十 零] 这种情况 return false; } else { // 针对 101 >>>> [一 百 零 十 一] 这种情况 its[idx + 1] = null; } } else if (idx === 0 && e === '一' && its[idx + 1] === '十'){ // 针对 12 >>>> [一 十 二] 这种情况 return false; } // 下面还可以再添加。。 不过应该没了。 return e; }); };

        Test simple Test de conversion24681632... 成十六三十二...

        // 2 的 n 次方 var twotwotwo = n => ( new Array(n).fill(2).reduce((acc, cur, idx) => { acc = acc * cur; return acc; }, 1) ) // 打印机 var logger = (item, idx) => console.log(`第 ${idx + 1} 个:`, item); // test code function test4toHans(n) { var res = arrGenerator(n).map(twotwotwo).map(toHans).map(arr2str); res.forEach(logger); }

        Parcourir les nombres

        ....du 1 au n

        var main = n => { var numbers = arrGenerator(n); return numbers.map(toHans).map(arr2str); }

        Tests


          过去多啦不再A梦

          https://github.com/wilon/php-...

          Les nombres PHP sont convertis en descriptions de caractères chinois et le RMB est en majuscule

            伊谢尔伦

            Prend en charge des centaines de milliards de nombres. La modification du tableau ws peut être étendue à l'infini. La modification du tableau cns en chinois traditionnel peut être utilisée pour capitaliser le RMB

            .
             $value) $str .= $ws[$key].$cns[$value]; $temp = '';//反转字符串 for($i = strlen($str)-1; $i>=0; $i--) $temp .= mb_substr($str,$i,1,'utf-8'); return $temp; } echo IntToString(231231251237); ////二千三百一十二亿三千一百二十五万一千二百三十七

            Ci-joint l'idée
            /a/11...

              Derniers téléchargements
              Plus>
              effets Web
              Code source du site Web
              Matériel du site Web
              Modèle frontal
              À propos de nous Clause de non-responsabilité Sitemap
              Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!