پوریا مستعان
4 سال پیش توسط پوریا مستعان مطرح شد
3 پاسخ

خطای A non well formed numeric value encountered

سلام خدمت دوستان.
من پروژه لاراولیمو آپلود کردم روی هاست، همه چی درست بود تا امروز یهو این ارور رو داد :

A non well formed numeric value encountered

این ارور هم مربوط میشه به این قسمت از کدم توی سبد خرید :

<li>
                        @php
                            $post_price = $post->price;
                            $totalPrice = Cart::all()->sum(function ($cart) use ($post_price){
                                return ((int) $cart['product']->price * (int) $cart['quantity']) +  $post_price ;
                            });
                            $price = $totalPrice - $post_price;
                        @endphp
                        <span>مبلغ کل</span><span> {{ floatval(number_format($price)) }} تومان</span>
                    </li>

و این خط :

return ((int) $cart['product']->price * (int) $cart['quantity']) +  $post_price ;

خیلی گشتم ولی دلیلشو نفهمیدم، اگر کسی میتونه کمک کنه
ممنون


ثبت پرسش جدید
محمد شریف احمدی
تخصص : یک عدد برنامه نویس
@mrahmadi 1 سال پیش مطرح شد
0

سلام،
این خطا معمولا به دلیل تلاش برای اعمال عملیات روی یک مقدار غیر عددی به وجود می آید.
در کد خودتان، شما از (int) برای تبدیل مقدار قیمت به integer استفاده کرده‌اید که ممکن است باعث ایجاد این خطا شده باشد، به خصوص اگر $cart['product']->price یک مقدار رشته ای باشد.
برای رفع این خطا شما باید ابتدا بررسی کنید که $cart['product']->price یک مقدار عددی است یا نه؟ با استفاده از تابع is_numeric() می‌توانید بررسی کنید که آیا یک رشته عددی است یا نه؟
بنابراین، می توانید کد خود را به صورت زیر تغییر دهید:

return (is_numeric($cart['product']->price) ? (int) $cart['product']->price : 0) * (int) $cart['quantity'] + $post_price;

با استفاده از شرط if شما می توانید اطمینان حاصل کنید که $cart['product']->price یک مقدار عددی است. با این تغییرات، خطا باید برطرف شود.

موفق باشید.


bye salam
@salaambye99 1 سال پیش مطرح شد
0

شاید $post->price یک عبارت غیر عددی و یا نال برمی گردونه.
برای همین بهتره اینو هم ابتدا تبدیل به عدد کنی .


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش مطرح شد
0

سلام وقت بخیر خطا میگه که فرمت باید عددی باشه گویا price به صورت string داده شده واسه همین شاید اررور میده البته احتمالا


محمد شریف احمدی
تخصص : یک عدد برنامه نویس
@mrahmadi 1 سال پیش مطرح شد
0

سلام،
این خطا معمولا به دلیل تلاش برای اعمال عملیات روی یک مقدار غیر عددی به وجود می آید.
در کد خودتان، شما از (int) برای تبدیل مقدار قیمت به integer استفاده کرده‌اید که ممکن است باعث ایجاد این خطا شده باشد، به خصوص اگر $cart['product']->price یک مقدار رشته ای باشد.
برای رفع این خطا شما باید ابتدا بررسی کنید که $cart['product']->price یک مقدار عددی است یا نه؟ با استفاده از تابع is_numeric() می‌توانید بررسی کنید که آیا یک رشته عددی است یا نه؟
بنابراین، می توانید کد خود را به صورت زیر تغییر دهید:

return (is_numeric($cart['product']->price) ? (int) $cart['product']->price : 0) * (int) $cart['quantity'] + $post_price;

با استفاده از شرط if شما می توانید اطمینان حاصل کنید که $cart['product']->price یک مقدار عددی است. با این تغییرات، خطا باید برطرف شود.

موفق باشید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام