لیست ها در حقیقت رشته هایی هستند که مقادیر در آن به وسیله ی یک کاراکتر خاص از هم جدا شده اند. مانند مثال های زیر :
به کاراکتری که مقادیر را از هم جدا می کند، Delimiter گویند. مثلا , (کاما) در مثال اول و ; در مثال دوم.
همانطور که در مثال های بالا دیدید، برای ایجاد لیست ها از استفاده می کنیم و مقادیر اولیه را تنظیم می کنیم.
● افزودن مقادیر به یک لیست :
ساده ترین راه برای افزودن یک مقدار به یک لیست استفاده از تابع ListAppend به صورت زیر می باشد :
مثال بالا مقدار جدید "php" را به انتهای لیست اضافه می کند. این تابع، دارای پارامتر سومی می باشد که اختیاری می باشد و می تواند مانند مثال بالا ذکر نشود. این پارامتر سوم، Delimiter لیست را مشخص می کند و به صورت پیش فرض مقدار آن کاما می باشد. اگر در لیست از Delimiter ی به غیر از کاما استفاده کرده باشیم، برای افزودن یک مقدار به انتهای لیست به صورت زیر عمل می کنیم :
ListAppend مقدار جدید را به انتهای لیست اضافه می کرد. برای افزودن یک مقدار به ابتدای لیست، از تابع ListPrepend ، به همان صورت که از ListAppend استفاده می کردیم، استفاده می کنیم. به مثال های زیر توجه فرمائید :
برای افزودن مقداری به لیست در یک مکان مشخص، از تابع ListInsertAt استفاده می کنیم. به صورت زیر :
در مثال بالا، مقدار "h" سومین عنصر از لیست خواهد شد. مانند توابع دیگری که در این مقاله معرفی گردید، این تابع نیز دارای پارامتر اختیاری چهارمی هست که Delimiter لیست را مشخص می کند و مقدار پیش فرض آن کاما می باشد.
● استخراج مقداری از لیست با استفاده از اندیس آن
برای استخراج مقدار عنصری از لیست با استفاده از اندیس آن، از تابع ListGetAt استفاده می کنیم. به صورت زیر :
کد بالا مقدار عنصر دوم لیست myList را در متغیر second_item قرار می دهد.
این تابع نیز دارای پارامتر اختیاری مشخص کننده Delimiter می باشد.
توابع ListFirst و ListLast به ترتیب مقدار عنصر اول، و مقدار عنصر آخر لیست را می دهند. تابع ListRest تمام عناصر یک لیست به غیر از عنصر اول را به عنوان خروجی می دهد.
برای بدست آوردن تعداد عناصر یک لیست از تابع ListLen به صورت زیر استفاده می کنیم :
برای حذف عنصری از لیست، از تابع ListDeleteAt به صورت زیر استفاده می کنیم :
کد بالا عنصر دوم لیست را حذف می کند.
●جستجو در لیست ها
برای پیدا کردن مقداری در لیست، از تابع ListFind استفاده می کنیم. این تابع موقعیت اولین عنصری که دارای مقدار دلخواه باشد را به عنوان خروجی بر می گرداند.
تابع ListContains موقعیت اولین عنصری که دارای مقدار شامل عبارت مورد نظر را به عنوان خروجی بر می گرداند.
کد بالا مقدار ۲ را در متغیر Pos۲ قرار می دهد، زیرا عبارت Hossein شامل عبارت se می باشد.
ListFind و ListContains بین حروف بزرگ و کوچک تفاوت قائل می شوند. برای اینکه در جستجو حروف بزرگ و کوچک یکسان باشند به جای توابع بالا از توابع ListFindNoCase و ListContainsNoCase استفاده می کنیم.
● لیست های دارای عناصر خالی
عناصر خالی، عناصری از لیست هستند که دارای هیچ مقداری نمی باشند. برای درک چگونگی کار با آن ها به مثال زیر توجه کنید :
فکر می کنید لیست myList دارای چند عنصر می باشد؟ شاید فکر کنید که این لیست دارای شش عنصر می باشد، ولی کلدفیوژن عناصر دارای مقدار خالی را حساب نمی کند ... پس لیست بالا از نظر کلدفیوژن سه عنصر دارد و "Ben" مقدار عنصر سوم آن می باشد.
برای ایجاد عناصر خالی، از کاراکتر فاصله به جای مقدار خالی استفاده کنید، مانند مثال زیر :
لیست بالا از نظر کلدفیوژن شش عنصر دارد.
برای تغییر مقدار عنصری از لیست از تابع ListSetAt مانند مثال زیر استفاده می کنیم :
کد بالا مقدار عنصر اول لیست را از Hadi به Good Boy تغییر می دهد.
● مرتب سازی عناصر لیست
برای مرتب سازی عناصر یک لیست از تابع ListSort استفاده می کنیم. این تابع دارای دو پارامتر اجباری که اولی مشخص کننده لیست، و دومی مشخص کننده نوع مرتب سازی می باشد، می باشد.
مقادیر قابل قبول برای پارامتر دوم عبارتند از "text"، "textnocase"، و "numeric". مرتب سازی "text" بین حروف بزرگ و کوچک تفاوت قائل می باشد و در مرتب سازی حروف بزرگتر اول تر قرار می گیرند ... "textnocase" برای حروف بزرگ و کوچک ارزش یکسانی قائل می باشد. "numeric" عناصر بر اساس ارزش عددی آن ها مرتب می سازد.
پارانتر سوم که اختیاری می باشد، ترتیب مرتب سازی را مشخص می سازد. "asc" (مقدار پیش فرض) مشخص می کند که مرتب سازی از ارزش کمتر به ارزش بیشتر باشد . "desc" برای مرتب سازی از ارزش بیشتر به ارزش کمتر به کار می رود. به مثال های زیر توجه کنید :
● Delimiter های یک لیست
توابعی که برای کار با لیست ها به کار می روند تقریبا همه شان یک پارامتر آخری اختیاری دارند که Delimiter لیست را مشخص می سازد. Delimiter هایی که اکثرا مورد استفاده قرار می گیرند، عبارتند از : کاما، ;، |، ~ .
برای تغییر Delimiter یک لیست از تابع ListChangeDelims به صورت زیر استفاده می کنیم :
*
پارامتر دوم مشخص کننده Delimiter جدید و پارامتر سوم مشخص کننده Delimiter قبلی می باشد. پارامتر سوم اختیاری می باشد و دارای مقدار پیش فرض کاما می باشد.
● ایجاد حلقه(Loop) روی عناصر لیست
برای ایجاد حلقه روی عناصر یک لیست، به صورت زیر عمل می کنیم :
#theElement#

در کد بالا، theElement ابتدا مقدار "a" ، سپس مقدار "b" ، سپس مقدار "c" و در آخر مقدار "d" می گیرد و در هر مرحله کد بین را برای مقادیر theElement اجرا می کند. delimiters اختیاری می باشد و دارای مقدار پیش فرض کاما می باشد.
● مناسب سازی یک لیست برای عبارات SQL
لیست زیر را در نظر بگیرید :
و حال می خواهید لیست بالا در Query زیر استفاده کنید :
SELECT *
FROM Fruit
WHERE FruitName IN (&#۰۳۹;pear&#۰۳۹;,&#۰۳۹;lemon&#۰۳۹;,&# ۰۳۹;orange&#۰۳۹;,&#۰۳۹;citron&#۰۳۹;)
شما نمی توانید از لیست به این صورت استفاده کنید :
SELECT *
FROM Fruit
WHERE FruitName IN (#myList#)
زیرا عناصر لیست دارای &#۰۳۹; (single quote) در دو طرفشان نمی باشند. برای این منظور، از تابع ListQualify استفاده می کنیم. مانند مثال زیر :
SELECT *
FROM Fruit
WHERE FruitName IN (#ListQualify(myList,"&#۰۳۹;")#))
● موارد استفاده از لیست ها
اینکه کجا از لیست ها استفاده کنید، بستگی به خودتان و خلاقیت و نحوه ی تفکر شما دارد. اما من شخصا از لیست ها در موارد زیر استفاده می کنم :
۱) وقتی می خواهم در یک متغیر کوکی (cookie) بیش از یک مقدار قرار دهم. زیرا نمی توان به کوکی ها مقادیر آرایه ای داد، لیست ها در این جا یکی از انتخاب های خوب برای استفاده می باشد. روش دیگری هم وجود دارد که بعدا در باره ی آن صحبت خواهم کرد.
۲) هنگامی می خواهم لیستی از مقادیر را در یک فیلد از یک رکورد در پایگاه داده ذخیره کنم. در این مورد نیز نمی توان از آرایه ها استفاده کرد.



سایت ماکرومدیاx