انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: rahmani در 20 امرداد 1392، 09:46 ق‌ظ

عنوان: خطای برنامه نویسی برای حلقه for
ارسال شده توسط: rahmani در 20 امرداد 1392، 09:46 ق‌ظ
سلام

عیدتون مبارک
فرض کنید یک پرونده داریم که شامل تعداد زیادی خط است که هر خط شامل تعدادی  ISBN است ( ISBN همان شابک یا شناسه انحصاری کتاب هست.)
 متاسفانه برخی خطوط تکراری هستند. برنامه ای خطوط را از پرونده می خواند وپس از پردازش در جدول پایگاه داده ها ذخیره می کند.
برای جلوگیری از پردازش مقادیر تکراری پشت سرهم در حلقه بررسی میشود که آیا مقدار فعلی با مقدار قبلی یکسان است یا نه؟

foreach ( $list->find('line') as $value ) {

if ($value == $pervious) {
echo '<br>value '.$value;
continue;
}
echo '<br>pervious '.$pervious;
$pervious = $value;
}
وقتی این شرط را
if ( $element == $pervious ) {
continue;
}
$pervious = $element;
میگذارم این خطا را میدهد.

Fatal error: Nesting level too deep - recursive dependency? in /var/www/projects/getNumber.php on line 11
متشکرم
عنوان: پاسخ : خطای برنامه نویسی برای دو حلقه for تو درتو
ارسال شده توسط: MrGee در 20 امرداد 1392، 12:49 ب‌ظ
خب دوست عزیز چه کاریه، کافیه قبل از وارد کردن فایل به برنامه از دستور sort همراه با سویچ ‎ -uاستفاده کنید. همچنین دستور uniq هم به همین منظور ساخته شده.
برای اطلاعات بیشتر به صفحه man این دو دستور مراجعه کنید.
در ضمن php هم تابع array_unique (http://php.net/manual/en/function.array-unique.php) رو برای همین کار داره.