به نام خدا
سلام دوستان امیدوارم حالتون خوب باشه...
امروز قصد داریم راجع به آرایه در کانستراکت صبحت کنیم. شیء آرایه (Array) قادر هست مقادیر اطلاعات شامل متن و عدد رو در خودش ذخیره و نگهداری کنه. ساز و کار آرایه در کانستراکت کاملاً مشابه ساز و کار آرایه در زبان های رایج برنامه نویسی هست و چیز جداگانه و جدیدی در خودش نداره. در زبان های برنامه نویسی ساختار آرایه (Array) برای جلوگیری از ساختن تعداد زیادی متغیر هست و در واقع با ساختن یک آرایه میتونیم مقادیر زیادی رو در داخلش ذخیره کنیم و با یک تیر چند نشون بزنیم:- * کدی که نوشتیم بسیار خواناتر و ساده تر میشه.
- * با استفاده از ساختار آرایه به جای ساختن چندین عدد متغیر خانه های کمتری از حافظه اشغال میشن و باعث میشه پرفرمنس (Performance) برنامه افزایش پیدا کنه.
- * از یک روش اصولی برای ذخیره سازی مقادیر موردنظرمون به جای روش غیراصولی و غلط ساختن چندین عدد متغیر استفاده کردیم.
مفهوم بُعد (Dimension) در آرایه ها:
آرایه در کانستراکت میتونه از یک بعد تا سه بعد رو شامل بشه. شاید بپرسین چرا برای یک آرایه بعد متصور میشیم و اصلاً معنای این بُعد (Dimension) چی هست؟ چرا به یک آرایه میگیم تک بعدی و به یک آرایه میگیم سه بعدی؟ در واقع پاسخ این سوال در درک معماری خانه های حافظه رایانه نهفته هست. اجازه بدین با طریقه ذخیره شدن مقادیر یک آرایه ساده یک بعدی در خانه های حافظه کامپیوتر آشنا بشیم. شکل زیر در واقع آرایش مقادیر یک آرایه یک بعدی (تک بعدی) به نام x رو در خانه های حافظه نمایش میده:
![[تصویر: array.gif]](http://www.bekaran.com/Images/array.gif)
هر آرایه چه یک بعدی باشه چه چند بعدی شامل چندین عنصر (Element) میشه. در واقع هر عنصر در آرایه همون مقادیری هست که در آرایه ذخیره کردیم. همونطور که در شکل مشخصه این آرایه یک بعدی که تعریف کردیم تنها شامل چهار عنصر هست پس میتونه چهار مقدار متفاوت رو درون خودش ذخیره کنه. برای مشخص کردن هر عنصر آرایه میتونیم طبق شکل خانه های حافظه به راحتی اون رو مشخص کنیم. اولین عنصر آرایه من به شکل x[0] تعریف میشه. دقت کنین که شمارش ابعاد خانه های یک آرایه تک بعدی یا چند بعدی با عدد صفر شروع میشه. پس یعنی خانه های یک آرایه تک بعدی چهار عنصری عبارت هستن از 0 و 1 و 2 و 3. در ضمن به شماره ای که به خانه ها در هر بعد اختصاص پیدا میکنه شاخص (Index) میگیم. پس یعنی این آرایه که تعریف کردیم 4 شاخص داره.
شاید اگر یکم دقت کرده باشین مفهوم بُعد رو قبل از اینکه من بیان کنم بهش رسیده باشین. ولی اگر نفهمیدین عیبی نداره ادامه مطلب رو بخونین!
حالا فرض کنین می خوام یک آرایه دو بعدی به نام A رو تعریف کنم. آرایش یک آرایه دو بعدی در خانه های حافظه به این شکل میشه:
![[تصویر: array2.gif]](http://www.bekaran.com/Images/array2.gif)
همونطور که در سمت چپ تصویر مشخصه آرایه دو بعدی ما در خانه های حافظه یک رایانه به این شکل تعریف میشه. یعنی ما قادر هستیم برای تشخیص یک مقدار یا عنصر آرایه (خانه حافظه) از یک سیستمی مثل دستگاه مختصات دکارتی استفاده کنیم. یعنی من میتونم عنصر «13» آرایه دو بعدی A رو به شکل A[1,3] گزارش کنم. پس حالا مفهوم بعد در آرایه رو متوجه شدین. در واقع در یک آرایه تک بعدی تنها از یک مشخصه برای مشخص کردن عناصر آرایه استفاده میشه اما در یک آرایه چند بعدی ما چندین مشخصه برای تعیین کردن یک عنصر آرایه داریم.
شکل زیر نمایش دهنده آرایش یک آرایه سه بعدی می باشد:
![[تصویر: 3d_array.png]](http://s4.picofile.com/file/8396569168/3d_array.png)
نکته: دقت کنین که بعد اول با X، بعد دوم با Y و بعد سوم با Z نمایش داده میشه.
طریقه تعریف یک آرایه تک بعدی یا چند بعدی:
همونطور که گفته شد یک آرایه در کانستراکت میتونه یک تا سه بعد باشه. اما اگر شما مقدار صفر رو برای ابعاد (Dimensions) آرایه تعریف کنید، مفسر کانستراکت اون آرایه رو یک آرایه خالی و بدون هیچ مقدار تلقی میکنه.
شاید تحلیل یک آرایه سه بعدی برای ما دشوار به نظر برسه. پس میتونیم از آرایه های تک بعدی و دو بعدی استفاده کنیم. اما چطور؟
- * برای تعریف یک آرایه تک بعدی (یک بعدی) ابعاد رو به شکل زیر تعریف می کنیم:
کد:
N × 1 × 1
- * برای تعریف یک آرایه دو بعدی ابعاد رو به شکل زیر تعریف می کنیم:
کد:
N × M × 1
خُب حالا شاید بپرسین تعریف یک آرایه تک بعدی بهتره یا دو بعدی؟ جواب اینه که بستگی به شما داره! فرض کنین قراره 12 مقدار رو در یک آرایه نگهداری کنیم. برای این کار میتونیم آرایه تک بعدی، دو بعدی و سه بعدی تعریف کنیم. همونطور که گفتم چون تحلیل یک آرایه سه بعدی ممکنه دشوار به نظر برسه پس بیخیالش میشیم و به آرایه یک بعدی و دو بعدی می پردازیم.
اگر بخوام این دوازده مقدار رو در یک آرایه تک بعدی تعریف کنم ابعاد رو باید به شکل زیر متصور بشم:
کد:
12 × 1 × 1
کد:
2 × 6 × 1
یا
6 × 2 × 1
(حواستون هست که 1×2×6 با 1×6×2 متفاوته)
کد:
X : 6
Y : 2
Z : 1
![[تصویر: myarray.png]](http://s5.picofile.com/file/8396569242/myarray.png)
دقت کنین همونطور که در ابتدا گفتم شمارش ابعاد خانه های یک آرایه تک بعدی یا چند بعدی از صفر شروع میشه.
حالا فرض کنین میخوام مقدار "yes" رو در یکی از خانه های این آرایه دو بعدی (مثلاً خانه 2,0) ذخیره کنم. چون آرایه من دو بعدی هست کافیه اکشن Set at XY رو انتخاب کنم و مقدار موردنظرم رو در خانه 2 و 0 به شکل زیر تعریف کنم: (اگر آرایه من یک بعدی بود باید اکشن Set at X رو انتخاب میکردم و اگر سه بعدی بود اکشن Set at XYZ رو باید انتخاب می کردم.)
کد:
X : 2
Y : 0
Value : "yes"
کد:
Array.At(2,0)
توضیحات راجع به کاندیشن های شیء آرایه:
- * کاندیشن Compare at X برای بررسی برابر بودن یک عنصر از آرایه تک بعدی با مقداری دلخواه به کار می رود.
- * کاندیشن Compare at XY برای بررسی برابر بودن یک عنصر از آرایه دو بعدی با مقداری دلخواه به کار می رود.
- * کاندیشن Compare at XYZ برای بررسی برابر بودن یک عنصر از آرایه سه بعدی با مقداری دلخواه به کار می رود.
- * کاندیشن Contains Value برای بررسی وجود یک مقدار در تمامی خانه ها (عناصر) یک آرایه تک بعدی یا چند بعدی به کار می رود.
- * دو کاندیشن For each element و Compare Current Value در ساختار حلقه For each به کار می رود.
Manipulation (دستکاری) یک آرایه تک بعدی یا چند بعدی :
فرض کنین ما یک آرایه دو بعدی شامل 4 عنصر با ابعاد 1×2×2 ایجاد کردیم. اما در حین ایونت نویسی می بینیم که 4 عنصر برای پیاده سازی پروژه مون خیلی کمه و به عناصر بیشتری نیاز داریم. آیا باید کل ایونت نویسی های بخش های مرتبط با آرایه رو از اول انجام بدیم؟ دست نگه دارین! شما میتونین با اکشن های Maniuplation شیء آرایه بعد از ایجاد کردن آرایه تون عناصرش رو مرتب کنین، حذف کنین و همچنین عناصر جدیدی اضافه کنین.
اکشن های Manipulation (دستکاری) شیء آرایه در یک بُعد مشخص (X,Y,Z | بعد اول، دوم و سوم):
- * اکشن Delete برای حذف یکی از شاخص ها (Indexes) یک بُعد مشخص از آرایه تک بعدی یا چند بعدی ما به کار میره. راجع به اینکه شاخص یا ایندکس چی هست در بخش مفهوم بُعد در آرایه صبحت کردم. این اکشن شامل دو پارامتر Index و Axis هست. فرض کنین قصد داریم شاخص شماره 1 بُعد اول (X) یک آرایه تک بعدی شامل شش عنصر رو حذف کنیم. پس باید در فیلد Index عدد 1 و برای پارامتر Axis عبارت "X" رو انتخاب کنیم. به این دلیل پارامتر Axis رو X تعیین کردم چون قصد داریم شاخص اول از بُعد اول رو حذف کنیم و از طرفی چون آرایه موردنظرمون تک بعدی هست انتخاب دیگه ای نداریم. دقت کنین که اجرای این اکشن بر روی یک آرایه تک بعدی باعث حذف تنها یک عنصر و بر روی یک آرایه دو بعدی باعث حذف یک ردیف از عناصر آرایه میشه. به طور دقیقتر بعد از اجرای این اکشن بر روی یک آرایه دو بعدی تعداد عناصری که از آرایه حذف میشن برابر هست با تعداد شاخص های بُعد مخالف بُعدی که انتخاب کردیم توی اکشن. تعداد نهایی عناصر آرایه هم از این فرمول به دست میاد:کد:
(تعداد شاخص های بُعد دوم) - (تعداد شاخص های بعد اول × تعداد شاخص های بعد دوم)
- * اکشن Insert برای وارد کردن مقداری مشخص در یکی از شاخص های بُعدی خاص به کار میره. این اکشن شامل سه پارامتر Value، Index و Axis می باشد. فرض کنین قصد داریم مقدار "test" رو در شاخص پنجم یک آرایه تک بعدی شامل هفت عنصر رو وارد کنیم. پس باید در فیلد Value عبارت "test"، در فیلد Index عدد 5 و پارامتر Axis رو "X" انتخاب کنیم. به این دلیل پارامتر Axis رو X تعیین کردم چون قصد داریم شاخص پنجم از بُعد اول رو بهش مقدار بدیم. دقت کنین که شاخصی که قصد داریم بهش مقداری بدیم حتماً لازم نیست از قبل در آرایه تک بعدی یا چند بعدی ما وجود داشته باشه و میتونیم یک شاخص جدید با مقداری جدید به آرایه مون اضافه کنیم.
اگر یک شاخص جدید به یک آرایه تک بعدی توسط این اکشن اضافه کنیم یک عنصر و اگر یک شاخص به یک آرایه دو بعدی توسط این اکشن اضافه کنیم به اندازه یک ردیف عنصر ایجاد خواهد شد. به طور دقیقتر تعداد عناصر جدیدی که در آرایه دو بعدی خواهیم داشت برابره با تعداد شاخص های بُعد مخالف (یعنی مثلاً اگر بعد X رو انتخاب کردیم میشه Y). تعداد عناصر نهایی هم از فرمول زیر قابل محاسبه است:کد:(تعداد شاخص های بعد اول × تعداد شاخص های بعد دوم) + (تعداد شاخص های بُعد دوم)
- * اکشن Pop در واقع عنصر یا عناصری از آرایه تک بعدی یا چند بعدی ما رو در یک بُعد مشخص از ابتدا یا انتهای اون بُعد حذف میکنه. این اکشن شامل دو پارامتر Where و Axis هست. در صورتی که از این اکشن برای یک آرایه یک بعدی استفاده بشه تنها یک عنصر (خانه) از آرایه حذف میشه. اما اگر از این اکشن در یک آرایه دو بعدی استفاده بشه به تعداد شاخص های موجود در بُعد مجاور عناصر (خانه های) آرایه حذف میشن. به عبارت دیگه یک ردیف به طور کامل حذف میشه. اجازه بدین یک مثال بزنم.
![[تصویر: 2d.png]](http://s4.picofile.com/file/8396569276/2d.png)
مطابق شکل فرض کنین قصد داریم یک عنصر از آرایه دو بعدی چهار عنصری خودمون رو از ابتدای بُعد اول (X) حذف کنیم. با این حساب ردیف اول (شامل شاخص 0 در بعد X و شاخص های 0 و 1 و 2 و 3 در بعد Y) حذف خواهد شد. به عبارت دیگه به تعداد شاخص های بُعد مجاور (Y) یعنی 0 و 1 و 2 و 3 که چهار عدد هستن از تعداد عناصر آرایه ما کم میشه و آرایه ما شامل 12 عنصر خواهد شد. برای اعمال چنین تنظیمی باید پارامتر Where رو بر روی عبارت front و پارامتر Axis رو بر روی عبارت X تنظیم کنیم. بعد از اینکه این اکشن اجرا بشه آرایه من به این شکل در میاد:
![[تصویر: let.png]](http://s5.picofile.com/file/8396569300/let.png)
- * اکشن Push برای اضافه کردن عنصر یا عناصر جدید در جلو یا عقب یک بُعد مشخص در یک آرایه به کار میره. عملکرد این اکشن دقیقاً مشابه اکشن Pop هست منتها با این تفاوت که اکشن Pop برای حذف کردن و اکشن Push برای اضافه کردن عنصر یا عناصر در ابتدا یا انتهای یک بُعد مشخص از یک آرایه به کار میره. پس با این حساب اگر آرایه ما یک بعدی باشه بعد از اجرای این اکشن تنها یک عنصر و اگر آرایه ما دو بعدی باشه با اجرای این اکشن یک ردیف جدید ایجاد می شود. پس به طور دقیقتر میشه گفت که با اجرای این اکشن برای یک آرایه دو بعدی تعداد عناصر نهایی آرایه ما از فرمول زیر به دست میاد:
کد:
(تعداد شاخص های بعد اول × تعداد شاخص های بعد دوم) + (تعداد شاخص های بُعد دوم)
این اکشن شامل سه پارامتر Where، Value و Axis هست. فرض کنین قصد دارم به یک آرایه دو بعدی 6 عنصری عناصری رو از ابتدا در بُعد اول (X) اضافه کنم که مقدارشون "love" هست. بدین منظور باید پارامتر Value رو برابر با "love"، پارامتر Where رو برابر با front و پارامتر Axis رو برابر با X قرار بدم. بعد از اجرای این اکشن تعداد عناصر آرایه من برابر خواهند بود با:
کد:
(3×2) + (2) = 8
تعداد شاخص های بعد اول : 3
تعداد شاخص های بعد دوم : 2
- * اکشن Reverse توالی عناصر یک بُعد مشخص را برعکس می کند. این اکشن تنها شامل یک پارامتر Axis هست که بیانگر بُعد موردنظر جهت معکوس یا برعکس کردن است. فرض کنین یک آرایه تک بعدی به شکل زیر داریم که قصد داریم این اکشن رو روی اون پیاده سازی کنیم. آرایه تک بعدی ما شامل سه عنصره:
چون آرایه من تک بُعدی هست تنها یک انتخاب دارم و میتونم بعد X رو برای پارامتر Axis در نظر بگیرم. آرایه من بعد از اجرای اکشن به این شکل تغییر میکنه:
- * اکشن Sort عناصر یک بُعد مشخص رو که به صورت عدد تعریف شدن رو به طور افزایشی (بر مبنای بزرگی و یا کوچکی اعداد ذخیره شده در خانه های آرایه) مرتب میکنه. این اکشن تنها شامل پارامتر Axis هست. فرض کنین من یک آرایه تک بعدی شامل سه عنصر دارم که قصد دارم روی اون این اکشن رو اعمال کنم. آرایه من قبل از اعمال این اکشن به این شکل هست:
پارامتر Axis رو برای اعمال این اکشن چون آرایه ام تک بُعدی هست و انتخاب دیگه ای ندارم بر روی X قرار میدم. بعد از اجرای اکشن عناصر آرایه من به صورت افزایشی (یعنی اول شاخص 2، سپس 1 و بعد 0) مرتب خواهد شد. بعد از اجرای این اکشن آرایه من به این شکل خواهد شد:
همونطور که مشاهده می کنین محتوای شاخص 2 (5) در خانه اول، محتوای شاخص 1 (3) در خانه دوم و محتوای شاخص 0 (2) در خانه سوم قرار گرفت.
دقت کنین که این اکشن تنها مقادیر عددی رو به صورت افزایشی مرتب نمیکنه و قادره مقادیری که به صورت رشته هم تعریف شدن رو هم به صورت افزایشی مرتب کنه. معیار مرتب کردن رشته ها توسط این اکشن طول رشته ها هست.
دیگر اکشن های شیء آرایه :
- * اکشن Download مقادیر ذخیره شده در درون آرایه را در قالب یک فایل جیسون (JSON) خروجی می دهد. این اکشن تنها شامل پارامتر Filename می باشد که نام فایل جیسون خروجی را مشخص می کند. پس از اجرای این اکشن فایل جیسون خروجی بلافاصله دانلود می شود.
- * اکشن Load برای بارگیری خروجی جیسون (JSON) آرایه به کار می رود. این اکشن تنها شامل پارامتر JSON می باشد. می توان به پارامتر JSON نام فایلی که توسط اکشن Download بارگیری شده و یا یک رشته جیسون دلخواه را نسبت داد.
- * اکشن Clear مقدار تمامی عناصر فعلی آرایه را حذف کرده و مقدار هر عنصر آرایه را به 0 تغییر می دهد.
- * اکشن Destroy به طور کلی شیء آرایه را از پروژه حذف می کند.
اکسپرشن های کاربردی شیء آرایه :
- * اکسپرشن At برای دریافت یک عنصر دلخواه از آرایه با وارد کردن ابعاد موردنظر به کار می رود. این اکسپرشن تنها یک پارامتر می پذیرد که همان ابعاد عنصر موردنظر می باشد. به طور مثال استفاده از این اکسپرشن به شکل زیر عنصر خانه (0,0) یک آرایه دو بعدی چهار عنصری را بر می گرداند:
کد:
Array.At(0,0)
- * اکسپرشن Cur شاخص مورداستفاده در Loopindex (مرحله از حلقه) لحظه ای حلقه موردنظر را در یک بُعد مشخص بر میگرداند. از این اکسپرشن می توان در یک حلقه For each به یکی از سه شکل زیر (بسته به بُعد موردنظر) استفاده کرد.
کد:
Array.CurX
یا
Array.CurY
یا
Array.CurZ
- * اکسپرشن CurValue برای دریافت مقدار لحظه ای مورداستفاده در Loopindex (مرحله از حلقه) یک حلقه For each به کار می رود. این اکسپرشن هیچ پارامتری نمی پذیرد و به شکل زیر استفاده می شود:
کد:
Array.CurValue
- * اکسپرشن IndexOf به دنبال یک مقدار ذخیره شده در بُعد اول (X) یک آرایه تک بعدی یا چند بعدی می گردد و اگر مقدار تعریف شده موجود بود شماره شاخص آن را بر می گرداند و اگر وجود نداشت عدد -1 را بر می گرداند. این اکسپرشن یک پارامتر می پذیرد که در واقع همان مقدار موردنظر جهت بررسی می باشد. مثال:
کد:
Array.IndexOf("yes")
- * اکسپرشن AsJSON مقادیر ذخیره شده در آرایه را به صورت یک رشته جیسون برمی گرداند. این اکسپرشن هیچ پارامتری نمی پذیرد و تنها به شکل زیر به کار می رود:
کد:
Array.AsJSON
توضیحات کوتاه و گذرا راجع به آرایه های سه بعدی:
ما تا به اینجا راجع به آرایه های تک بعدی و دو بعدی صحبت کردیم و گفتیم چون آرایه های سه بعدی میتونن پیچیده باشن از توضیحاتش صرف نظر میکنیم. اما خالی از لطف نیست که یکسری مطالب جزئی راجع به آرایه سه بعدی ارائه بدم. یک آرایه سه بعدی همونطور که در بخش مفهوم ابعاد مشاهده کردین میتونه به شکل یک مکعب باشه. در واقع وقتی ما اطلاعات رو در یک آرایه سه بعدی ذخیره میکنیم اونا رو در حجم مکعب توزیع می کنیم. یعنی هر یک از اطلاعات ذخیره شده یک خانه مکعبی کوچک از مکعب اصلی رو اشغال میکنن. اما چطور باید ابعاد یک آرایه سه بعدی رو تعریف کنیم؟
برای تعریف ابعاد یک آرایه سه بعدی باید به شکل زیر عمل کنیم:
کد:
N × M × K
برای مثال فرض کنین قصد دارم یک آرایه سه بعدی 27 عنصری تعریف کنم. پس میتونم ابعاد آرایه سه بعدی خودم رو به این شکل بیان کنم:
کد:
3 × 3 × 3
یا
9 × 1 × 3
یا
.
.
.
کد:
X: 9
Y: 1
Z: 3
ذخیره فایل جیسون خروجی شیء آرایه در سرور:
قبل از هر چیز لازمه شیء اِی جَکس (AJAX) رو در پروژه خودتون اضافه کنین. بعد در داخل هاستتون کدهای PHP زیر رو که نوشتم ذخیره کنین و طبق توضیحات بعدی عمل کنین.
(حتماً توجه کنین که وقتی فایل PHP رو در یک دایرکتوری یا پوشه در هاست یا سرور خودتون آپلود می کنین فایلهای جیسونی که قصد دارین ذخیره بشن هم در همون دایرکتوری ذخیره میشن.)
کد php:
<?php
/**
* @author Master Badfar
* @copyright 2020
*/
// صدور مجوز ajax برای مرورگر
header('Access-Control-Allow-Origin: *');
// قطع نمایش خطاهای مفسر PHP
ini_set('display_errors', 0);
error_reporting(~E_WARNING & ~E_NOTICE & ~E_STRICT);
// تعریف متغیر میزان ارور
$error = 0;
// دریافت مقادیر جیسون و نام فایل جیسون و ذخیره آنها در یک متغیر
$json_string = $_POST['json'];
$filename = $_POST['filename'];
// بررسی خالی نبودن دو پارامتر مقدار جیسون و نام فایل جیسون
if (empty($json_string)){
echo "You should enter a json string." . '</br>';
$error++;
}elseif(empty($filename)){
echo "You should enter a name for json file." . '</br>';
$error++;
}
// نمایش تعداد کل ارورها
if ($error > 0){
echo "Number of Errors that were found: " . $error;
}
// بررسی موجود بودن نام فایل قید شده؛ در صورتی که موجود نبود یک فایل جدید جیسون ساخته شود و در صورتی که موجود بود محتویات جدید جیسون در ادامه فایل گنجانده شود
if (!file_exists($filename . ".json") && $error == 0){
$openfile = fopen( $filename. ".json", "w") or die("Unable to open file!");
fwrite($openfile, $json_string);
fclose($myfile);
echo "JSON File ' " . $filename . " ' successfully saved!";
}elseif(file_exists($filename . ".json") && $error == 0){
$openfile = fopen($filename. ".json", "w") or die("Unable to open file!");
fwrite($openfile, $json_string);
fclose($myfile);
echo "JSON File ' " . $filename . " ' successfully updated!";
}
?>
کد:
http://yourhost.com/file.php
کد:
"json=" &Array.AsJSON& "&filename=" & "test"
خروجی های کد PHP :
این کد به ما چندین خروجی با توجه به شرایط مختلف میده.
- * اگر هیچ مقداری برای json در نظر گرفته نشده باشد عبارت زیر نمایش داده می شود:
کد:
You should enter a json string.
- * اگر هیچ مقداری برای filename در نظر گرفته نشده باشد عبارت زیر نمایش داده می شود:
کد:
You should enter a name for json file.
- * اگر بعد از ارسال درخواست به فایل PHP فایل جیسونی با نام مشابه نام وارد شده در درخواست در سرور موجود باشد، محتویات فایل موجود در سرور تماماً حذف می شود و محتویات درخواست ارسال شده جایگزین محتویات قبلی می شود و به نوعی محتویات فایل جیسون آپدیت می شود. نمایش پیغام زیر حاکی از این موضوع است:
کد:
JSON File ' x ' successfully upadated!
- * اگر بعد از ارسال درخواست به فایل PHP فایل جیسونی با نام مشابه نام وارد شده در درخواست در سرور موجود نباشد، به طبع یک فایل جیسون جدید با نام قید شده در درخواست ارسالی ایجاد می شود و محتوای جیسون موردنظر به فایل ایجاد شده در سرور اضافه می شود. پیغام زیر حاکی از این موضوع است:
کد:
JSON File ' x ' successfully saved!
- * اگر تعداد ارورهای یافت شده (شامل خالی بودن محتوای جیسون و نام فایل جیسون) بیش از یک عدد باشد پیغام زیر پس از نمایش تمامی ارورها چاپ خواهد شد:
کد:
Number of Errors that were found: x
دریافت مقادیر ذخیره شده در یک فایل جیسون موجود در سرور و اضافه کردن محتویات فایل جیسون به آرایه :
خُب ما بررسی کردیم که چطور محتوای جیسون موردنظرمون رو در سرور ذخیره کنیم. شاید لازم باشه بخوایم محتوای یک فایل جیسون که در سرور ذخیره شده رو وارد آرایه کنیم. برای این منظور قبل از هر چیزی اگر شیء AJAX رو به پروژه مون اضافه نکردیم اضافه می کنیم. بعد کدهای PHP زیر رو در سرور خودمون ذخیره می کنیم.
(حتماً توجه کنین که این فایل PHP رو باید داخل دایرکتوری یا پوشه ای از هاست یا سرورتون قرار بدین که فایل های جیسون در اون وجود داره.)
کد php:
<?php
/**
* @author Master Badfar
* @copyright 2020
*/
// صدور مجوز ajax برای مرورگر
header('Access-Control-Allow-Origin: *');
// قطع نمایش خطاهای مفسر PHP
ini_set('display_errors', 0);
error_reporting(~E_WARNING & ~E_NOTICE & ~E_STRICT);
// تعریف متغیر میزان ارور
$error = 0;
// دریافت نام فایل جیسون موردنظر و ذخیره آن در یک متغیر
$filename = $_POST['filename'];
// بررسی خالی نبودن پارامتر filename
if(empty($filename)){
echo "You should enter the name of the json file." . '</br>';
$error++;
// بررسی وجود داشتن فایل وارد شده
}elseif(!file_exists($filename . ".json")){
echo "The file does not exist." . '</br>';
$error++;
}
// نمایش تعداد کل ارورها
if($error > 0){
echo "Number of Errors that were found: " . $error;
}
// خواندن فایل جیسون موردنظر
if ($error == 0){
// باز کردن فایل جهت خواندن
$LoadFile = fopen($filename . ".json", "r") or die(" File not found");
// تشکیل حلقه while جهت خواندن خط به خط فایل
while(!feof($LoadFile)){
echo fgets($LoadFile);
}
// پایان حلقه
//
// بستن فایل باز شده
fclose($LoadFile);
}
?>
کد:
http://yourhost.com/file.php
کد:
[color=#666666]"filename="&"test"[/color]
خُب پروسه بسیار ساده است. ما یک درخواست به فایل PHP ارسال می کنیم و اگر فایل موجود بود و مشکلی وجود نداشت PHP محتویات فایل رو به ما برمیگردونه یا برای ما نمایش میده. حالا چطور باید این محتویات جیسون رو وارد آرایه بکنیم؟ کافیه از اکشن Load استفاده کنین و مقدار پارامتر JSON این اکشن رو برابر با AJAX.Lastdata قرار بدین. تبریک میگم! به راحتی تونستین محتویات فایل جیسون رو وارد آرایه کنین. حالا میتونین روی عناصر دلخواه خودتون پردازش داشته باشین.
خروجی های کد PHP :
این کد به ما چندین خروجی با توجه به شرایط مختلف میده.
- * اگر هیچ مقداری برای filename در نظر گرفته نشده باشد عبارت زیر نمایش داده می شود:
کد:
You should enter the name of the json file.
- * اگر فایل موردنظر در سرور موجود نبود پیغام زیر نمایش داده می شود:
کد:
The file does not exist.
- * اگر تعداد ارورهای یافت شده (شامل خالی بودن نام فایل جیسون و موجود نبودن فایل موردنظر در سرور) بیش از یک عدد باشد پیغام زیر پس از نمایش تمامی ارورها چاپ خواهد شد:
کد:
Number of Errors that were found: x
امیدوارم این مطلب براتون کاربردی و مفید واقع شده باشه.
همونطور که دیدین آرایه دقیقاً اقتباسی از ماتریس در ریاضیات هست.
برای نوشتن این مطلب زمان زیادی صرف شده پس لطفاً با نظرات خوب و سپاس هاتون حقیر رو برای نوشتن این شکل آموزش ها بیش از پیش ترغیب کنین.
اگر هم موردی جا افتاده یا احساس میکنین درست بیان نشده حتماً در ادامه گوشزد کنین.
آموزش شیء دیکشنری رو هم میتونین در اینجا مطالعه کنین.
با آرزوی بهترین ها...