PDA

View Full Version : unset کردن یک آرایه



hamidtinker
دوشنبه 11 بهمن 1400, 23:26 عصر
سلام دوستان ، چون جوابی برای سوالم ندیدم مجبور شدم اولین تاپیکم رو ایجاد کنم.
من یک جدول سفارشات ، مشتری ها و محصولات دارم.

در ابتدا کد رو میزارم که ببینید :





if ($_POST["order_code"]) {
foreach ($_POST["order_code"] as $key => $value)
{
$id = $_POST["order_code"];
$array = array(
"code" => $id[$key]
);

$array_order = implode(",",array_map("intval",$array));
$queries = 'SELECT tblorders.product_id, tblorders.order_code,
tblproducts.id, tblproducts.product_count
FROM tblorders JOIN tblproducts ON tblproducts.id =
tblorders.product_id WHERE order_code IN ( ' . $array_order . ' )
';
$pdoInstance = DBConnection::getDBConnectionInstance();
$statement = $pdoInstance->prepare($queries);
$statement->execute();
$orders = $statement->fetchAll();
foreach ($orders as $order)
{
$order_array = array(
$order["order_code"] => $order["product_count"]
);
var_dump($order_array);
}
}
}


یک توضیح در مورد کد، در صفحه سفارشات با انتخاب چک باکس ها مقادیر هر چک باکس یعنی order_code رو به صورت آرایه میگیرم و با ایجکس به php ارسال میکنم.
در انتها برای اینکه بدونم سفارشات من چند محصول داره یه حلقه زدم، اینجا زمانی که از آرایه ایجاد شده var_dump میگیرم خروجی به این شکل میشه :




array(1) { [5417736]=> string(2) "10" }
array(1) { [5417736]=> string(2) "10"
array(1) { [5417736]=> string(1) "0" }
array(1) { [1899299]=> string(2) "10" }
array(1) { [1899299]=> string(2) "10" }


کلید آرایه رو شماره سفارش و مقدارش رو تعداد محصول از جدول محصولات قرار دادم، حالا یه راهنمایی میخوام ، میخوام زمانی که مقدار یک محصول در سفارش برابر با صفر بود ، کلید مشابه هم unset بشه ، در اینجا سفارش به شماره 5417736 دارای سه تا محصول هست که تعداد یکیش صفر هست و حالا میخوام بقیه کلید های این آرایه که شامل شماره سفارش 5417736 میشه نادیده گرفته بشه ، چرا دارم این کار رو میکنم؟؟؟
اول بگم که این برای یک سیستم چند فروشندگی هست که دارم پیاده سازیش میکنم ، زمانی که مشتری یا فروشنده اقدام به ثبت یک سفارشی میکنه که داخل سفارشش یک محصول با مقدار صفر یا کمتر هست، در جدول کاستومر ستون order_lack مقدار 1 وارد میشه یعنی این سفارش دارای محصول با مقدار صفر هست ، و در پنل ادمین زمانی که میخوام سفارشات رو آماده بسته بندی کنم ، با انتخاب چک باکس ها و تغییر اکشن فرم باید بررسی کنم که تعداد محصول اضافه شده یا نه ، اگر برای هر سفارش هنوز محصول با موجودی صفر وجود داشت اون سفارشی که محصول با موجودی صفر داره نمیتونه تغییر وضعیت پیدا کنه ولی شماره سفارش بعدیش باید تغییر وضعیت بخوره.

hamidtinker
سه شنبه 12 بهمن 1400, 15:18 عصر
اساتید کسی میتونه کمک کنه؟ دچار حلقه شدم روی این مورد

plague
چهارشنبه 13 بهمن 1400, 19:11 عصر
سلام
با unset میتونی یک کلید از آرایه رو حذف کنی اگه درست متوجه منظورت شده باشم



unset($array['key']);

البته خوب این کدت مشخصا کار نمیکنه و مشکل داره
اول اینکه شما نمیتونی توی آرایه کلید تکراری داشته باشی و کلید های تکراری رو نویس میشن
نکته دیگه اینکه شما توی حلقه درای var_dump میکنی که باعث شده به اشتباه بیفتی و فکر کنی این آرایته
آرایت رو باید بیرون حلقه دامپ کنی تا ببینی شکل نهاییش رو

مورد دیگه اینکه شما داده ها رو توی آرایه نمیریزی ... اگه دقت کنی شما توی حلقه وردامپ رو گزاشتی یعنی به ازای هر دور حلقه یک وردامپ کردی
اگه درست ریخته بودی توی آرایه باید دامپت در هر دور بیشتر میشد و در همه وردامپ هات توی آرایه یک مورد بیشتر نداری