2017-07-10 6 views
0

Ich versuche, die Nummer in ein Wort umzuwandeln. also benutze ich unter diesem code. Aber wenn Convert Einige der Zahlen sind Show-Fehler. Der Fehler ist "Undefined offset: -4" in Zeile 47 und 48. Wie löst man diesen Fehler? Mein Code ist untenFehler beim Umwandeln der Nummer in das Wort

<?php 
    $total_amount=8123.52; 
    $number = $total_amount; 
    $no = round($number); 
    $point = round($number - $no, 2) * 100; 
    $hundred = null; 
    $digits_1 = strlen($no); 
    $i = 0; 
    $str = array(); 
    $words = array('0' => '', '1' => 'one', '2' => 'two', 
    '3' => 'three', '4' => 'four', '5' => 'five', '6' => 'six', 
    '7' => 'seven', '8' => 'eight', '9' => 'nine', 
    '10' => 'ten', '11' => 'eleven', '12' => 'twelve', 
    '13' => 'thirteen', '14' => 'fourteen', 
    '15' => 'fifteen', '16' => 'sixteen', '17' => 'seventeen', 
    '18' => 'eighteen', '19' =>'nineteen', '20' => 'twenty', 
    '30' => 'thirty', '40' => 'forty', '50' => 'fifty', 
    '60' => 'sixty', '70' => 'seventy', 
    '80' => 'eighty', '90' => 'ninety'); 
    $digits = array('', 'hundred', 'thousand', 'lakh', 'crore'); 
    while ($i < $digits_1) { 
    $divider = ($i == 2) ? 10 : 100; 
    $number = floor($no % $divider); 
    $no = floor($no/$divider); 
    $i += ($divider == 10) ? 1 : 2; 
    if ($number) { 
     $plural = (($counter = count($str)) && $number > 9) ? 's' : null; 
     $hundred = ($counter == 1 && $str[0]) ? ' and ' : null; 
     $str [] = ($number < 21) ? $words[$number] . 
      " " . $digits[$counter] . $plural . " " . $hundred 
      : 
      $words[floor($number/10) * 10] 
      . " " . $words[$number % 10] . " " 
      . $digits[$counter] . $plural . " " . $hundred; 
    } else $str[] = null; 
    } 
    $str = array_reverse($str); 
    $result = implode('', $str); 
    $points = ($point) ? 
    "." . $words[$point/10] . " " . 
      $words[$point = $point/10] : ''; 
    echo $result . "(Approx)" ; 
?> 
+2

Sie müssen debuggen, um es zu lösen. Sie versuchen, eine Liste mit einem negativen Index zu indizieren, der unsinnig ist. Finde heraus, wo genau du den negativen Index verwendest, und finde heraus, woher er kommt. – Carcigenicate

+0

kann ich nicht verstehen. bitte helfen Sie es zu lösen :( – jony

+0

Welcher Teil? Sie versuchen, das -4th Element aus einer Liste zu greifen. Liste kann nicht mit negativen Zahlen indiziert werden. – Carcigenicate

Antwort

1

Problem in vierten Zeile $point = round($number - $no, 2) * 100; ist. Es gibt einen Fehler aus, wenn die Subtraktion minus Ausgabe ergibt.

versuchen so etwas wie dieses

$point = round($no - $number, 2) * 100 ; 
if($point < 0){ 
    $point = $point * (-1); 
} 

Und gelöstes Problem.

+0

Vielen Dank für diese Lösung :) – jony

+0

Sie sind herzlich willkommen. :) –

Verwandte Themen