باستخدام صفيف ما بعد PayPal
سؤال
أنا أستخدم PayPal لمعالجة المدفوعات على موقعي. يعيد PayPal صفيف البريد مثل
[item_number1] =12
[item_name1] = My product name
[quantity1] =3
[item_number2] =14
[item_name2] = My product name2
[quantity2] =5
[num_cart_items] 2
أدخل خطوة هنا الآن أنا فقط أذهب في دوائر لا أذهب إلى أي مكان
ثم قم بتشغيل الحلقة
for($i = 1;$i <= $num_cart_items ;$i++){
$x = 'item_number' . $i;
$y = 'item_name' . $i;
$z = 'quantity' . $i;
$new_amount = $row['stock_quantity'] - $$z;
$db->update1_by_match('cart_products','stock_quantity',$new_amount,'id',$$x);
}
أواجه مشكلة مع هذه المتغيرات المتغيرة. هل هناك طريقة أفضل للقيام بذلك؟
شكرا أندرو
المحلول
سأقوم بتغيير الكود المنقح الخاص بك لاستخدام $ _post مباشرة ، على سبيل المثال
for($i = 1;$i <= $_POST['num_cart_items'] ;$i++){
$item_number= intval($_POST['item_number' . $i]);
$item_quantity= intval($_POST['quantity' . $i]);
printf("DEBUG: item %d item:%d quantity:%d<br>", $i, $item_number, $item_quantity);
$new_amount = $row['stock_quantity'] - $item_quantity;
$db->update1_by_match('cart_products','stock_quantity',$new_amount,'id', $item_number);
}
يجب أن يساعدك الناتج التشخيصي على تحسين المكان الذي تسير فيه الأمور.
سؤال سابق - الملاحظات أدناه الرجوع إلى السؤال قبل مراجعة كاملة لذلك تم إجراؤها.
ما تحتاجه حقًا هو صفيف ، بدلاً من محاولة استخدام المتغيرات المتغيرة
$item_numbers=array(24, 16);
foreach ($item_numbers as $item_number) {
$result = $db->get_cols_by_match('cart_products','stock_quantity','id', $item_number);
}
للقيام بذلك بالطريقة التي كنت تفعلها ، شيء من هذا القبيل قد يوضح ذلك
$item_number1='24';
$item_number2='16';
$num_cart_items = 2
for($i = 1;$i <= $num_cart_items ;$i++){
$varname='item_number' . $i;
printf("DEBUG: %s = %s<br>", $varname, $$varname);
$result = $db->get_cols_by_match('cart_products','stock_quantity','id', $$varname);
}
$$ varname هو مثال على أ متغير متغير, ، ولكن في حالتك ، يعلن صفيف نيتك بطريقة أكثر وضوحًا.
لا تنتمي إلى StackOverflow