سلام خدمت دوستان.
من پروژه لاراولیمو آپلود کردم روی هاست، همه چی درست بود تا امروز یهو این ارور رو داد :
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 ;
خیلی گشتم ولی دلیلشو نفهمیدم، اگر کسی میتونه کمک کنه
ممنون
سلام،
این خطا معمولا به دلیل تلاش برای اعمال عملیات روی یک مقدار غیر عددی به وجود می آید.
در کد خودتان، شما از (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 یک مقدار عددی است. با این تغییرات، خطا باید برطرف شود.
موفق باشید.
شاید $post->price یک عبارت غیر عددی و یا نال برمی گردونه.
برای همین بهتره اینو هم ابتدا تبدیل به عدد کنی .
سلام وقت بخیر خطا میگه که فرمت باید عددی باشه گویا price به صورت string داده شده واسه همین شاید اررور میده البته احتمالا
سلام،
این خطا معمولا به دلیل تلاش برای اعمال عملیات روی یک مقدار غیر عددی به وجود می آید.
در کد خودتان، شما از (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 یک مقدار عددی است. با این تغییرات، خطا باید برطرف شود.
موفق باشید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟