راکت
حل شده

خطای A non well formed numeric value encountered

3 پاسخ

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

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 ;

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

ثبت پرسش جدید

پاسخ‌ها

3
محمد شریف احمدی
محمد شریف احمدی
@mrahmadi

تخصص: یک عدد برنامه نویس

بهترین پاسخ

سلام،
این خطا معمولا به دلیل تلاش برای اعمال عملیات روی یک مقدار غیر عددی به وجود می آید.
در کد خودتان، شما از (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
bye salam
@salaambye99

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

میکائیل
میکائیل
@FullStack

تخصص: برنامه نویسی سمت سرور و کلاینت

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

شاید پاسخ شما همین‌جا باشد

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

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