اذهب إلى المحتوى

السؤال

نشر (معدل)

سلام عليكم

المعادلة دي بتديني الناتج بشكل صحيح عادي لكن رسالة الخطأ دي بتظهر

Notice: A non well formed numeric value encountered 

مش عارف بتظهر ليه رقم ان المعادلة متكررة في اماكن تانية من الصفحة بمتغيرات مختلفة و شغالة زي الفل

        <?php
        $sum_all_rubber = 0;
        foreach ($rubbers AS $rubber){
            $total = (($rubber['countPiece'] * $rubber['colorNumber_input']) * $rubber['price']);
            /** @noinspection PhpWrongStringConcatenationInspection */
            $sum_all_rubber += number_format($total,2);
            ?>

 

تم التعديل في بواسطة Wael Aljamal
توضيح السؤال

Recommended Posts

  • 1
نشر

أعتقد أن المشكلة في السطر 

$sum_all_rubber += number_format($total,2);

حيث أن number_format تعيد سلسلة نصية string وليس رقم، وعندما يصبح المجموع كبير تضيع للسلسة النصية محرف , مثلا

1,999.90

والذي لايجمع مع باقي الأعداد، لذلك حاول تحويل الناتج النهائي لسلسلة نصية وإبقاء المتحول sum_all_rubber رقماً للنهاية

<?php

$sum_all_rubber = 0;

foreach ($rubbers AS $rubber){
  $total = (($rubber['countPiece'] * $rubber['colorNumber_input']) * $rubber['price']);
  /** @noinspection PhpWrongStringConcatenationInspection */
  $sum_all_rubber += $total;
}

$sum_all_rubber = number_format($sum_all_rubber,2);  // هنا التحويل
  
?>

 

  • 0
نشر
بتاريخ 3 دقائق مضت قال Wael Aljamal:

أعتقد أن المشكلة في السطر 


$sum_all_rubber += number_format($total,2);

حيث أن number_format تعيد سلسلة نصية string وليس رقم، وعندما يصبح المجموع كبير تضيع للسلسة النصية محرف , مثلا


1,999.90

والذي لايجمع مع باقي الأعداد، لذلك حاول تحويل الناتج النهائي لسلسلة نصية وإبقاء المتحول sum_all_rubber رقماً للنهاية


<?php

$sum_all_rubber = 0;

foreach ($rubbers AS $rubber){
  $total = (($rubber['countPiece'] * $rubber['colorNumber_input']) * $rubber['price']);
  /** @noinspection PhpWrongStringConcatenationInspection */
  $sum_all_rubber += $total;
}

$sum_all_rubber = number_format($sum_all_rubber,2);  // هنا التحويل
  
?>

 

نعم ملاحظة هامة جدا لم انتبه لها 

و ايضا لم انتبه إلى ان هناك ارقام عشرية تدخل في الحساب فكان لابد من استخدام float

الحل كان تحويل الناتج النهائي لسلسلة نصية وإبقاء المتغير sum_all_rubber رقماً ثم استبدال 

            $total = (($rubber['countPiece'] * $rubber['colorNumber_input']) * $rubber['price']);

ب 

$total = ( (float)$rubber['colorNumber_input'] * $rubber['countPiece']) * $rubber['price'];

شكرا لكم جميعا 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...