عفواً ، طريقتك معقدة وأرى فيها حتى أخطاء منطقية ( خوارزمية ) ..
يجب علينا دائماً التفكير بالحلول الأبسط والأسهل علينا كمبرمجين ، لا تنسي أنك ستعودين لقراءة الكود لاحقاً لتطويره أو مراجعته ، كلما كان أبسط فالمراجعة أسهل .
غير ذلك ، أرى أن لديك خلل بسيط في فهم عمل دالة mktime ، فهي لم تقبل في حياتها أن نمرر لها تاريخاً وتحوّله لنا إلى ثوانٍ ، عمل mktime هو تمرير الشهر واليوم والسنة والساعة والدقيقة والثانية ، كي تحوّلها لنا إلى ثوانٍ ( نظام Unix Timestamp ) .. للمزيد:
PHP: mktime - Manual اقتباس:
| لكني لا أريد استخدام دالة explode لأن المستخدم قد يدخل التاريخ بطريقة مختلفة "- أو / " |
إذا كانت هذه هي المشكلة الوحيدة لديك ، فهناك حلول أسهل:
كود PHP:
<?php
$date = '2008 - 05 - 23';
$months = 5;
list($y, $m, $d) = split('[/.-]', $date);
echo $expiry_date = date('Y/m/d', mktime(0, 0, 0, $m + $months, $d, $y));
?>
تحياتي، أشرف السمهوري