راهنمای PHP Array – نحوه ایجاد، کار با و حلقه زدن از طریق آرایه ها
در هر زبان برنامه نویسی، آرایه ها یک گزینه انعطاف پذیر برای ذخیره بیش از یک نوع داده در یک متغیر ارائه می دهند. آنها یکی از همه کاره ترین ساختارهای داده در دنیای برنامه نویسی هستند، که یکی از دلایلی است که بسیاری از داده های خارجی و بسیاری از API ها به صورت آرایه ارائه می شوند.
هنگامی که یک آرایه در PHP ایجاد می کنید، باید بتوانید از آن استفاده کنید. برای انجام این کار، باید آن را دستکاری یا حلقه بزنید. PHP چندین توابع داخلی برای دستکاری آرایه ها و چندین راه برای حلقه زدن در میان آرایه ها ارائه می کند.
درک و استفاده از آن توابع و حلقه های داخلی برای دستکاری کارآمد آرایه ضروری است. با استفاده از آنها، در زمان صرفه جویی می کنید، کدهای پاک تری می نویسید و به توسعه دهنده PHP کارآمدتری تبدیل خواهید شد.
توجه داشته باشید که این قسمت اول یک مجموعه دو مقاله ای است. بخش دوم بر نحوه استفاده از MongoDB در PHP با بازسازی پروژه کارت های تیم فوتبال تمرکز خواهد کرد. بازیکنان فوتبال از پایگاه داده MongoDB Atlas خواهند آمد. سپس آنها را به صورت آرایه واکشی می کنیم و در صفحه نمایش می دهیم.
آنچه را پوشش خواهیم داد
نحوه ایجاد آرایه با تابع آرایه
نحوه ایجاد آرایه با نحو براکت مربع
نحوه چاپ آرایه با تابع print_r()
نحوه چاپ آرایه با تابع var_dump()
چگونه از طریق آرایه ها در PHP حلقه بزنیم
چگونه از طریق یک آرایه نمایه شده حلقه بزنیم
چگونه از طریق یک آرایه انجمنی حلقه بزنیم
چگونه از طریق یک آرایه در داخل قالب HTML حلقه بزنیم
نحوه ایجاد آرایه در PHP
در PHP آرایه ها به 3 شکل وجود دارند:
ایندکس شده - یک آرایه منظم با شاخص های از پیش تعریف شده
چند بعدی - آرایه ای با آرایه های درون آن
انجمنی - آرایه ای با شاخص های رشته ای
دو راه برای ایجاد هر یک از آن 3 شکل آرایه در PHP وجود دارد. می توانید از تابع Array()
یا نحو براکت مربع ( [ ]
) استفاده کنید.
نحوه ایجاد آرایه با تابع آرایه
برای ایجاد یک آرایه PHP با array()
array کافیست عناصر را به تابع منتقل کنید.
این شکار است:
یک آرایه معمولی با array()
array با ارسال مستقیم عناصر به تابع ایجاد می شود
یک آرایه چند بعدی با array()
array با قرار دادن یک یا چند array()
در داخل یک array()
یک آرایه انجمنی با array()
با جدا کردن کلید و مقادیر با فلش چربی ( =>
) و جدا کردن هر ورودی با کاما ایجاد می شود.
در اینجا نمونه هایی از همه آنها در کد آورده شده است:
// regular array with the array function $myFruitsArr1 = array("Apple", "Banana", "Cashew", "Mango"); // multidimensional array with the array function $myFruitsArr2 = array( array("Apple", "Avocado", "Apricot"), array("Banana", "Blackeberry", "Babaco"), array("Cashew", "Cherry", "Canary melon"), array("Mango", "Melon", "Miracle fruit"), ); // associative array with the array function $myFruitsArr3 = array( "fruit 1" => "Apple", "fruit 2" => "Banana", "fruit 3" => "Cashew", "fruit 4" => "Mango", );
نحوه ایجاد آرایه با نحو براکت مربع
سینتکس براکت مربع رایج ترین راه برای ایجاد آرایه در PHP (و همچنین جاوا اسکریپت) است.
برای ایجاد یک آرایه با نحو براکت مربع، هر رخداد array()
را با باز کردن و بستن براکت های مربع جایگزین کنید:
// regular array with the square bracket syntax $myFruitsArr1 = ["Apple", "Banana", "Cashew", "Mango"]; // multidimensional array with the square bracket syntax $myFruitsArr2 = [ ["Apple", "Avocado", "Apricot"], ["Banana", "Blackeberry", "Babaco"], ["Cashew", "Cherry", "Canary melon"], ["Mango", "Melon", "Miracle fruit"], ]; // associative array with the square bracket syntax $myFruitsArr3 = [ "fruit 1" => "Apple", "fruit 2" => "Banana", "fruit 3" => "Cashew", "fruit 4" => "Mango", ];
نحوه چاپ آرایه ها در PHP
اغلب اوقات، ممکن است نیاز به چاپ یک آرایه برای اشکال زدایی یا اهداف بصری داشته باشید. PHP توابع echo
، print_r()
و var_dump()
را برای چاپ داده ها فراهم می کند.
echo
آرایه ای را آنطور که باید چاپ نمی کند زیرا برای چاپ رشته ها، اعداد صحیح و شناورها در نظر گرفته شده است. شما باید print_r()
و var_dump()
برای چاپ آرایه ها استفاده کنید.
نحوه چاپ آرایه با تابع print_r()
تابع print_r()
اطلاعات ساختاریافته در مورد یک متغیر را در قالبی قابل خواندن برای انسان نمایش می دهد.
print_r()
به ویژه برای نمایش و بازرسی محتویات ساختارهای داده پیچیده مانند آرایه ها و اشیاء مفید است. شما با ارسال شناسه آرایه به آن از آن استفاده می کنید:
print_r($myFruitsArr1); print_r($myFruitsArr2); print_r($myFruitsArr3);
حتی اگر آرایه یا شیء دارای عناصر تو در تو باشد، print_r()
کل آرایه یا شی را طی می کند و محتوا را بدون از دست دادن هیچ عنصری نمایش می دهد.
در اینجا هر یک از 3 نوع آرایه زمانی که آنها را با تابع print_r()
چاپ می کنید، به نظر می رسد:
نحوه چاپ آرایه با var_dump()
تابع var_dump()
به شما امکان می دهد آرایه یا متغیری مانند تابع print_r()
را چاپ کنید. کاری که متفاوت انجام می دهد این است که نوع داده آنچه را که چاپ می کنید، از جمله هر عنصر آرایه را نمایش می دهد.
در اینجا نحوه استفاده از تابع var_dump()
آورده شده است:
var_dump($myFruitsArr1); var_dump($myFruitsArr2); var_dump($myFruitsArr3);
و در اینجا به نظر می رسد که هر یک از 3 نوع آرایه زمانی که آنها را با تابع var_dump()
چاپ می کنید، به نظر می رسند:
توابع آرایه پی اچ پی
پی اچ پی طیف وسیعی از توابع آرایه را ارائه می دهد. آنها به شما امکان می دهند طیف گسترده ای از عملیات را روی آرایه ها انجام دهید، از دستکاری اولیه تا پردازش پیشرفته داده ها.
بیش از 70 تابع آرایه وجود دارد که می توانید در PHP از آنها استفاده کنید، پس ما نمی توانیم همه آنها را در این کتابچه ارائه دهیم.
در اینجا مواردی هستند که به آنها خواهیم پرداخت:
count()
array_push()
array_pop()
array_shift()
array_unshift()
array_splice()
array_keys()
array_values()
array_reduce()
sort()
rsort()
array_replace()
array_reverse()
array_slice()
array_sum()
array_merge()
array_filter()
array_map()
array_search()
array_column()
in_array()
تابع آرایه count()
تابع count()
همان کاری را انجام می دهد که از نامش پیداست - از یک آرایه عبور می کند، موارد را می شمارد و یک عدد صحیح نشان دهنده طول آرایه را برمی گرداند.
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; echo count($myFruitsArr); // 4
count()
می تواند مفید باشد اگر می خواهید کاری را بر اساس طول یک آرایه خاص انجام دهید:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; if (count($myFruitsArr) === 4) { echo "The fruits are enough"; } else { echo "The fruits are not enough"; } // The fruits are enough
از آنجایی که count()
طول یک آرایه را می گیرد، معمولاً در حلقه ها استفاده می شود:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; for ($i = 0; $i < count($myFruitsArr); $i++) { echo $myFruitsArr[$i] . "<br>"; } /* Output: Apple Banana Cashew Mango */
تابع آرایه array_push()
array_push()
یک عنصر را به انتهای آرایه هل می دهد. یعنی یک آیتم مشخص شده را بعد از آخرین آیتم در آرایه اضافه می کند. این بدان معنی است که آرایه اصلی را تغییر می دهد.
array_push
یک آرگومان array
اجباری و عنصری را که می خواهید به آرایه موجود فشار دهید می گیرد:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; array_push($myFruitsArr, "Avocado"); print_r($myFruitsArr); // Array ( [0] => Apple [1] => Banana [2] => Cashew [3] => Mango [4] => Avocado )
برای قالب بندی بهتر آرایه حاصل می توانید تگ <pre>
را بازتاب دهید:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; array_push($myFruitsArr, "Avocado"); echo "<pre>"; var_dump($myFruitsArr); echo "<pre>"; /* Output: array(5) { [0]=> string(5) "Apple" [1]=> string(6) "Banana" [2]=> string(6) "Cashew" [3]=> string(5) "Mango" [4]=> string(7) "Avocado" } */
همچنین می توانید دو یا چند مورد را فشار دهید:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; array_push($myFruitsArr, "Avocado", "Pineapple"); echo "<pre>"; var_dump($myFruitsArr); echo "<pre>"; /* Output: array(6) { [0]=> string(5) "Apple" [1]=> string(6) "Banana" [2]=> string(6) "Cashew" [3]=> string(5) "Mango" [4]=> string(7) "Avocado" [5]=> string(9) "Pineapple" } */
تابع array_pop()
array_pop()
برعکس کاری که array_push()
انجام می دهد - یک عنصر را از انتهای آرایه حذف می کند . این بدان معناست که می تواند در ساختارهای داده مبتنی بر پشته مفید باشد.
برای استفاده از تابع array_pop()
، فقط باید آرایهای را که میخواهید از آن حذف کنید، عبور دهید:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; array_pop($myFruitsArr); echo "<pre>"; var_dump($myFruitsArr); echo "<pre>"; /* Mango is gone: array(3) { [0]=> string(5) "Apple" [1]=> string(6) "Banana" [2]=> string(6) "Cashew" } */
می توانید عنصر پاپ شده را بازتاب دهید زیرا array_pop()
آرایه اصلی را تغییر می دهد:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; $poppedElem = array_pop($myFruitsArr); echo $poppedElem; // Mango
array_shift()
array_shift()
مانند array_pop
است، اما اولین عنصر یک آرایه را حذف می کند و نه آخرین. پس ، در ساختارهای داده مبتنی بر صف مفید است.
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; array_shift($myFruitsArr); var_dump($myFruitsArr); /* Apple is gone: array(3) { [0]=> string(6) "Banana" [1]=> string(6) "Cashew" [2]=> string(5) "Mango" } */
از آنجا که تابع array_shift()
آرایه اصلی را تغییر میدهد، ایندکسها را دوباره مرتب میکند:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; echo "before shift: "; var_dump($myFruitsArr); echo "<br>"; echo "after shift: "; array_shift($myFruitsArr); var_dump($myFruitsArr);
array_shift()
آرایه حذف شده را نیز برمی گرداند زیرا آرایه اصلی را تغییر می دهد:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; $shiftedElem = array_shift($myFruitsArr); echo $shiftedElem; // Apple
تابع array_unshift()
تابع array_unshift()
یک یا چند عنصر را به ابتدای یک آرایه اضافه می کند. آرایه اصلی را با قرار دادن عناصر جدید در شروع و فهرست کردن مجدد عناصر موجود اصلاح می کند.
آرایه ای را که می خواهید به آن اضافه کنید و عنصری را که می خواهید اضافه کنید به عنوان آرگومان می گیرد. می توانید بدون ارائه عنصری برای اضافه کردن به ابتدای آرایه از آن استفاده کنید، اما توصیه می شود این کار را نکنید.
در اینجا یک مثال است:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; array_unshift($myFruitsArr, "Avocado"); var_dump($myFruitsArr); /* array(5) { [0]=> string(7) "Avocado" [1]=> string(5) "Apple" [2]=> string(6) "Banana" [3]=> string(6) "Cashew" [4]=> string(5) "Mango" } */
تابع array_splice()
متد array_splice()
یک آیتم را از یک آرایه حذف می کند و آن را با جایگزین مشخص شده جایگزین می کند. array_splice()
آرایه اصلی را تغییر می دهد، پس آیتم حذف شده را برمی گرداند.
array_splice()
حداکثر 4 آرگومان می گیرد، همانطور که در دستور اصلی آن در زیر مشاهده می کنید:
array_splice(array, startingIndex, length, replacement)
array
ای است که از تابع array_splice()
روی آن استفاده می کنید
startingIndex
موقعیتی است که میخواهید شروع به حذف آیتم(های) آرایه کنید. یعنی اگر 0
مشخص کنید، اولین عنصر آرایه را حذف می کند.
length
این است که تا چه حد میخواهید پیوند پیش رود. به عنوان مثال، اگر 2
مشخص کنید، دو مورد از startingIndex
مشخص شده حذف خواهند شد.
replacement
موردی است که جایگزین موردی می شود که باید حذف شود. این می تواند یک آیتم یا آرایه دیگر باشد.
در اینجا یک مثال با یک آرایه و یک جایگزین رشته آورده شده است:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; $splicedItem = array_splice($myFruitsArr, 1, 1, "Avocado"); var_dump($myFruitsArr); /* Output: array(4) { [0]=> string(5) "Apple" [1]=> string(7) "Avocado" [2]=> string(6) "Cashew" [3]=> string(5) "Mango" } */ echo "<br>"; var_dump($splicedItem); /* Output: array(1) { [0]=> string(6) "Banana" } */
در اینجا مثال دیگری با یک آرایه به عنوان جایگزین آورده شده است:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; $splicedItem = array_splice($myFruitsArr, 1, 1, array("Avocado", "Apricot", "Abiu")); var_dump($myFruitsArr); /* Output: array(6) { [0]=> string(5) "Apple" [1]=> string(7) "Avocado" [2]=> string(7) "Apricot" [3]=> string(4) "Abiu" [4]=> string(6) "Cashew" [5]=> string(5) "Mango" } */ var_dump($splicedItem); /* Output: array(1) { [0]=> string(6) "Banana" } */
تابع array_keys()
در هر آرایه دو جزء وجود دارد - کلیدها و مقادیر. برای یک آرایه معمولی، کلیدها شاخص هستند. برای یک آرایه انجمنی، کلیدها شاخص هایی هستند که برای هر آیتم آرایه مشخص شده اند.
تابع array_keys
کلیدهای آیتم های یک آرایه را استخراج می کند.
اگر آرایه یک آرایه معمولی باشد، شاخص های آرایه را به عنوان کلید فهرست می کند:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; $myFruitsArrKeys = array_keys($myFruitsArr); print_r($myFruitsArrKeys); /* Output: Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 ) */
اگر آرایه یک آرایه انجمنی باشد، کلیدهایی را که برای هر آیتم در آرایه مشخص کردهاید فهرست میکند:
$myFruitsWithColors = [ "apple" => "red", "banana" => "yellow", "orange" => "orange", "grape" => "purple", "watermelon" => "green", ]; $myFruitsWithColorsKeys = array_keys($myFruitsWithColors); print_r($myFruitsWithColorsKeys); /* Output: Array ( [0] => apple [1] => banana [2] => orange [3] => grape [4] => watermelon ) */
array_keys()
می تواند آرگومان دوم را بپذیرد. این معمولاً یک آیتم در آرایه است.
اگر یک آیتم را به عنوان آرگومان دوم مشخص کنید، array_keys()
کلید را فقط برای آن آیتم برمی گرداند:
$myFruitsWithColors = [ "apple" => "red", "banana" => "yellow", "orange" => "orange", "grape" => "purple", "watermelon" => "green", ]; $myFruitsWithColorsKeys = array_keys($myFruitsWithColors, "orange"); print_r($myFruitsWithColorsKeys); /* Output: Array ( [0] => orange ) */
تابع array_values()
تابع array_values()
بخش دیگر یک آرایه - مقادیر را استخراج می کند.
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; $myFruitsArrValues = array_values($myFruitsArr); print_r($myFruitsArrValues); /* Output: Array ( [0] => Apple [1] => Banana [2] => Cashew [3] => Mango ) */
خروجی array_values()
به نظر می رسد زمانی که یک آرایه معمولی را با تابع print_r()
چاپ می کنید، اتفاق می افتد، اما اینطور نیست. اتفاقی که می افتد این است که شاخص هایی را نیز به آن مقادیر چاپ شده اختصاص می دهد.
یک مثال با یک آرایه انجمنی این موضوع را واضح تر می کند:
$myFruitsWithColors = [ "apple" => "red", "banana" => "yellow", "orange" => "orange", "grape" => "purple", "watermelon" => "green", ]; $myFruitsWithColorsValues = array_values($myFruitsWithColors); print_r($myFruitsWithColorsValues); /* Output: Array ( [0] => red [1] => yellow [2] => orange [3] => purple [4] => green ) */
تابع array_reduce()
تابع array_reduce()
برای "کاهش" یک آرایه به یک مقدار واحد با اعمال یک تابع callback برای هر عنصر آرایه استفاده می شود. مانند روش آرایه reduce()
در جاوا اسکریپت کار می کند.
array_reduce()
از طریق آرایه تکرار می شود و تابع callback را روی هر عنصر انجام می دهد و یک نتیجه واحد را جمع می کند.
این بدان معناست که میتوانید از آن برای جمعآوری و محاسبه دادهها، مانند محاسبه ارزش کل اقلام در یک سبد خرید، استفاده کنید.
array_reduce()
2 آرگومان مورد نیاز و 1 آرگومان اختیاری می گیرد. در اینجا نحو است:
array_reduce(arraytoReduce, callbackFunction, initialValue)
arrayToReduce
آرایه ای است که در آن از reduce
استفاده می کنید
callbackFunction
تابعی است که آیتم های آرایه را به یک مقدار واحد کاهش می دهد
initialValue
اختیاری است. مقدار اولیه انباشته را مشخص می کند. در صورت ارائه، به عنوان مقدار اولیه برای اولین تماس با تابع برگشت استفاده می شود. اگر ارائه نشود، اولین عنصر آرایه به عنوان مقدار انباشته اولیه استفاده می شود.
array_reduce()
معمولاً با اعداد استفاده می شود:
$myNumbers = [5, 89, 19, 10, 49]; $total = array_reduce($myNumbers, function ($carry, $item) { return $carry + $item; }, 0); echo $total; // 172
میتوانید تابع callback را در یک تابع جداگانه استخراج کنید و آن را به عنوان یکی از آرگومانهای تابع array_reduce()
ارسال کنید:
$myNumbers = [5, 89, 19, 10, 49]; function addNums($carry, $item) { return $carry + $item; } $total = array_reduce($myNumbers, 'addNums', 0); echo $total; // 172
array_reduce()
همچنین با رشته ها کار می کند:
$words = ["Hello", "camper!", "How", "are", "you", "today?"]; // Use array_reduce to concatenate all the strings $result = array_reduce($words, function ($carry, $item) { return $carry . " " . $item; }, ""); echo $result; // Hello camper! How are you today?
تابع sort()
تابع sort()
یک آرایه را می گیرد و آن را بر اساس مقادیر آیتم های آن به ترتیب صعودی مرتب می کند. آرایه اصلی را با مرتب کردن مجدد عناصر آن به ترتیب صعودی اصلاح می کند.
اگر مقداری داده در یک آرایه دارید که می خواهید به ترتیب صعودی سازماندهی کنید، تابع sort()
برای آن عالی است.
$myNums = [4, 2, 1, 3, 5]; sort($myNums); print_r($myNums); /* Output: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) */
تابع rsort()
تابع rsort()
شبیه به sort()
است، اما آرایه را به جای ترتیب صعودی به ترتیب نزولی مرتب می کند.
$myNums = array(4, 2, 1, 3, 5); rsort($myNums); /* Output: Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 ) */ print_r($myNums);
تابع array_replace()
تابع array_replace()
برای جایگزینی مقادیر آرایه اول با مقادیر آرایه ارائه شده استفاده می شود. برای به روز رسانی داده ها عالی است.
array_replace()
دو آرگومان می گیرد - آرایه ای که می خواهید جایگزین کنید و آرایه جدید.
$myNamesArr1 = ["Zen", "Kay", "Luger"]; $myNamesArr2 = ["Yuan", "Jay", "John"]; $replaceRes = array_replace($myNamesArr1, $myNamesArr2); print_r($replaceRes); /* Output: Array ( [0] => Yuan [1] => Jay [2] => John ) */
اگر مقدار دوم را ارائه نکنید، تنها آرگومان ارائه شده را برمی گرداند:
$myNamesArr1 = ["Zen", "Kay", "Luger"]; $myNamesArr2 = ["Yuan", "Jay", "John"]; $replaceRes = array_replace($myNamesArr1); print_r($replaceRes); /* Output: Array ( [0] => Zen [1] => Kay [2] => Luger ) */
اگر سه یا چند آرایه را به عنوان آرگومان ارسال کنید، آخرین آرگومان جایگزین اولی خواهد شد، نه دومی:
$myNamesArr1 = ["Zen", "Kay", "Luger"]; $myNamesArr2 = ["Yuan", "Jay", "John"]; $myNamesArr3 = ["Eddy", "White", "Jane"]; $replaceRes = array_replace($myNamesArr1, $myNamesArr2, $myNamesArr3); print_r($replaceRes); /* Output: Array ( [0] => Eddy [1] => White [2] => Jane ) */
همچنین می توانید به طور انتخابی یک مورد را در یک شاخص خاص جایگزین کنید:
$myFruitsArr1 = ["a" => "apple", "b" => "banana", "c" => "cherry"]; $myFruitsArr2 = array("b" => "blueberry", "c" => "cranberry"); $replaceRes = array_replace($myFruitsArr1, $myFruitsArr2); print_r($replaceRes); /* Output: Array ( [a] => apple [b] => blueberry [c] => cranberry ) */
تابع array_reverse()
تابع array_reverse()
برای معکوس کردن ترتیب عناصر در یک آرایه استفاده می شود. یک آرایه جدید با عناصر به ترتیب معکوس ایجاد می کند.
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango"]; $reversedArr = array_reverse($myFruitsArr); print_r($reversedArr); /* Output: Array ( [0] => Mango [1] => Cashew [2] => Banana [3] => Apple ) */
اگر نحوه عملکرد rsort()
را به خاطر داشته باشید، بسیار شبیه نحوه کارکرد array_reverse()
است. تنها تفاوت این است که rsort()
آرایه اصلی را تغییر می دهد، اما array_reverse()
کار را نمی کند.
تابع array_slice()
اگر می خواهید قسمت خاصی از یک آرایه را استخراج کنید و آن را به عنوان یک آرایه جداگانه برگردانید، array_slice()
تابع ایده آلی است که می توانید استفاده کنید.
array_slice()
به شما امکان می دهد شاخص شروع، طول برش و حفظ کلیدهای آرایه اصلی را مشخص کنید. در اینجا نحو اصلی آمده است:
array_slice(arrayToSlice, startIndex, length, preserve)
arrayToSlice
آرایه ای است که می خواهید از array_slice()
روی آن استفاده کنید
startIndex
شاخصی است که می خواهید برش را از آن شروع کنید
length
عبارت است از اینکه می خواهید برش در arrayToSlice
چقدر پیش برود. اختیاری است.
preserve
مشخص می کند که آیا می خواهید شاخص(های) آرایه تغییر کند یا خیر. این یک بولی است.
مثال زیر برش را از عنصر دوم در آرایه آغاز می کند، به این معنی که عنصر اول را کنار گذاشته و بقیه را برمی گرداند:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango", "Avocado", "Pineapple"]; $slicedArr = array_slice($myFruitsArr, 1); print_r($slicedArr); /* Output: Array ( [0] => Banana [1] => Cashew [2] => Mango [3] => Avocado [4] => Pineapple ) */
فراموش نکنید که می توانید تعداد آیتم هایی را که از برش می خواهید با تعیین آرگومان اختیاری سوم مشخص کنید:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango", "Avocado", "Pineapple"]; $slicedArr = array_slice($myFruitsArr, 1, 3); print_r($slicedArr); /* Output: Array ( [0] => Banana [1] => Cashew [2] => Mango ) */
اگر میخواهید ایندکسها را حفظ کنید، میتوانید چهارمین آرگومان بولی اختیاری true
را مشخص کنید:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango", "Avocado", "Pineapple"]; $slicedArr = array_slice($myFruitsArr, 1, 3, true); print_r($slicedArr); /* Output: Array ( [1] => Banana [2] => Cashew [3] => Mango ) */
array_sum()
array_sum()
تمام مقادیر عددی یک آرایه را با هم اضافه می کند و نتیجه را برمی گرداند. تنها پارامتر مورد نیاز آرایه حاوی مقادیر عددی است.
$myNums = [5, 6, 9, 20, 1]; $total = array_sum($myNums); echo $total; // 41
اگر روی آرایهای حاوی رشتهها استفاده شود، array_sum()
این خطا را نشان میدهد Warning: array_sum(): Addition is not supported on type string in /location/index.php on line #
:
$myFruitsArr = ["Apple", "Banana", "Cashew", "Mango", "Avocado", "Pineapple"]; $total = array_sum($myFruitsArr);
array_merge()
array_merge()
دو یا چند آرایه را ادغام می کند. این بدان معناست که برای ترکیب چندین آرایه در یک آرایه غول پیکر ایده آل است.
$array1 = [1, 2, 3]; $array2 = [4, 5, 6, 7, 8]; $result = array_merge($array1, $array2); print_r($result); /* Output: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 ) */
همچنین می توانید از array_merge()
در آرایه های انجمنی استفاده کنید:
$array1 = [ 'fname' => 'John', 'sex' => 'male', ]; $array2 = [ 'lname' => 'Doe', 'favColor' => 'red', ]; $result = array_merge($array1, $array2); print_r($result); /* Output: Array ( [fname] => John [sex] => male [lname] => Doe [favColor] => red ) */
اگر آرایه ها حاوی کلیدهای مشابه باشند، در نتیجه آخرین مورد، کلید(های) قبلی را لغو می کند:
$array1 = [ 'fname' => 'John', 'sex' => 'male', ]; $array2 = [ 'fname' => 'Jane', 'favColor' => 'red', ]; $result = array_merge($array1, $array2); print_r($result); /* Output: Array ( [fname] => Jane [sex] => male [favColor] => red ) */
اگر یک آرایه منفرد به array_merge()
ارسال شود و کلیدها اعداد صحیح متوالی نباشند که از 0 شروع میشوند، بلکه دنبالهای مانند 3
، 7
، 8
هستند، آرایهای که به دست میآید کلیدهای خود را با شروع از 0
مجدداً نمایه میکند:
$myArray = [3 => 'Barn', 7 => 'Silo', 8 => 'Tank']; $res = array_merge($myArray); print_r($res); /* Array ( [0] => Barn [1] => Silo [2] => Tank ) */
تابع array_filter()
تابع array_filter()
آیتم های یک آرایه را بر اساس تابع برگشتی که به آن ارسال می کنید، «فیلتر» می کند. می توانید از آن برای حذف موارد غیر ضروری از یک آرایه استفاده کنید.
اگر تابع callback برای عنصری در آرایه true
برگرداند، آن عنصر در آرایه حاصل گنجانده می شود، در غیر این صورت، حذف می شود.
array_filter()
حداکثر 3 آرگومان می گیرد. نحو اصلی به این صورت است:
array_filter(arrayToFilter, callbackFunction, flag)
arrayToFilter
آرایه ای است که می خواهید فیلتر کنید. این یک استدلال اجباری است.
callbackFunction
تابعی است که میخواهید برای هر عنصر آرایه اعمال کنید. اگر ارائه نشود، تمام عناصری که به true
ارزیابی شده اند در نتیجه گنجانده می شوند.
flag
مشخص می کند که آیا کلیدهای آرایه حفظ می شوند یا دوباره فهرست می شوند. مقادیر ممکن عبارتند از ARRAY_FILTER_USE_KEY
، ARRAY_FILTER_USE_BOTH
و ARRAY_FILTER_USE_BOTH
.
در اینجا یک مثال آورده شده است که اعداد زوج را از آرایه ای از اعداد بدست می آورد:
$array = [76, 11, 12, 22, 13, 43, 54]; $getEvenNums = array_filter($array, function ($value) { return $value % 2 == 0; }); print_r($getEvenNums); /* Array ( [0] => 76 [2] => 12 [3] => 22 [6] => 54 ) */
در اینجا یک مثال پیچیده تر از قرار دادن همه افراد با نام کوچک "جان" در یک آرایه انجمنی چند بعدی آورده شده است:
$persons = [ ['first' => 'John', 'last' => 'Doe'], ['first' => 'Janet', 'last' => 'Jackson'], ['first' => 'John', 'last' => 'Smith'], ['first' => 'Jane', 'last' => 'Doe'], ['first' => 'David', 'last' => 'Lee'], ['first' => 'John', 'last' => 'Olga'] ]; $personsWithJohnFirstnames = array_filter($persons, function ($person) { return $person['first'] === "John"; }); print_r($personsWithJohnFirstnames); /* Output: Array ( [0] => Array ( [first] => John [last] => Doe ) [2] => Array ( [first] => John [last] => Smith ) [5] => Array ( [first] => John [last] => Olga ) ) */
به یاد داشته باشید که اگر آرایه را به عنوان تنها آرگومان ارسال کنید، آرایه به دست آمده حاوی هر آیتمی است که به true
ارزیابی می شود:
$array = [9, 4, 10, 0, 3]; $result = array_filter($array); print_r($result); /* Output: Array ( [0] => 9 [1] => 4 [2] => 10 [4] => 3 ) */
تابع array_map()
تابع array_map()
تمام عناصر یک آرایه را بر اساس یک تابع callback ارسال شده به آن تبدیل می کند. سپس یک آرایه جدید حاوی عناصر تبدیل شده را برمی گرداند.
شما می توانید در مورد array_map()
به عنوان یک راه راحت تر برای "حلقه" کردن در یک آرایه فکر کنید، حتی اگر از نظر فنی یک حلقه نیست.
array_map()
دو پارامتر اجباری را دریافت می کند - تابع callback و آرایه ای که می خواهید تبدیل کنید.
در اینجا یک مثال آورده شده است که در آن تمام اعداد یک آرایه مربع می شوند:
$numbers = [5, 8, 3, 4]; $squaredNumbers = array_map(function ($num) { return $num * $num; }, $numbers); print_r($squaredNumbers); /* Output: Array ( [0] => 25 [1] => 64 [2] => 9 [3] => 16 ) */
همچنین می توانید تابع callback را در یک تابع جداگانه استخراج کرده و آن را ارسال کنید:
function squareNums($num) { return $num * $num; } $numbers = [5, 8, 3, 4]; $squaredNumbers = array_map('squareNums', $numbers); print_r($squaredNumbers); /* Output: Array ( [0] => 25 [1] => 64 [2] => 9 [3] => 16 ) */
همچنین میتوانید از تابع array_map()
روی آرایهای از رشتهها استفاده کنید. مثال زیر تمام میوه های آرایه $fruitsArr
را به حروف بزرگ تبدیل می کند:
$fruitsArr = ['mango', 'apple', 'orange', 'strawberry']; function toUpperCase($str) { return strtoupper($str); } $uppercasedFruits = array_map('toUpperCase', $fruitsArr); print_r($uppercasedFruits); /* Output: Array ( [0] => MANGO [1] => APPLE [2] => ORANGE [3] => STRAWBERRY ) */
در اینجا یک مثال با استفاده از یک آرایه انجمنی آورده شده است که در آن همه مقادیر با prefix_
پیشوند_ هستند:
$fruitsArr = [ 'fruit1' => 'mango', 'fruit2' => 'banana', 'fruit3' => 'orange', ]; function addPrefixToFruits($fruit) { return 'prefix_' . $fruit; } $prefixedFruits = array_map('addPrefixToFruits', $fruitsArr); print_r($prefixedFruits); /* Output: Array ( [fruit1] => prefix_mango [fruit2] => prefix_banana [fruit3] => prefix_orange ) */
توجه : اگر میپرسید تفاوت بین array_map()
و array_filter()
چیست، نکته مهم این است که array_map()
همه عناصر آرایه را بر اساس یک تابع callback تبدیل میکند . در مقابل، array_filter()
هر عنصری از آرایه را که با تابع callback ارسال شده به آن مطابقت دارد، برمیگرداند .
تابع array_search()
تابع array_search()
برای جستجوی یک مقدار معین در یک آرایه استفاده می شود. اگر مقدار پیدا شد، کلید مقدار را برمیگرداند، در غیر این صورت، چیزی برمیگرداند.
array_search()
حداکثر 3 آرگومان می گیرد. در اینجا نحو است:
array_search(valueToSearch, arrayToSearch, strict)
valueToSearch
مقداری است که به دنبال آن هستید
arrayToSearch
آرایه ای است که می خواهید مقدار را در آن جستجو کنید
strict
یک آرگومان بولی اختیاری است که تعیین می کند آیا یک عملگر مقایسه دقیق باید در جستجو استفاده شود یا خیر. به طور پیش فرض false
است. اما اگر روی true
تنظیم شود، عناصر یکسان را در آرایه جستجو می کند و آنها را برمی گرداند. به عنوان مثال، "1"
و 1
.
در اینجا نمونه ای از تحلیل مورد Cashew
در مجموعه ای از میوه ها آورده شده است:
$myFruitsArr = [ "fruit1" => "Apple", "fruit2" => "Banana", "fruit3" => "Cashew", "fruit4" => "Mango", "fruit5" => "Avocado", "fruit6" => "Pineapple" ]; $checkForCashew = array_search('Cashew', $myFruitsArr); echo $checkForCashew; // fruit3
و اگر از آن در یک آرایه معمولی استفاده کنید، باز هم شاخص آرایه را که کلید زیر هود است برمی گرداند:
$myFruitsArr = [ "Apple", "Banana", "Cashew", "Mango", "Avocado", "Pineapple" ]; $CheckForCashew = array_search('Cashew', $myFruitsArr); echo $CheckForCashew; // 2
array_column()
array_column()
یک ستون از مقادیر را از یک آرایه چند بعدی استخراج می کند. آرایه ای حاوی مقادیر یک ستون مشخص شده از آرایه ورودی را برمی گرداند.
این بدان معناست که array_column
زمانی مفید است که می خواهید یک آرایه از ستون یک آرایه موجود ایجاد کنید.
array_column()
حداکثر 3 آرگومان می گیرد. در اینجا نحو است:
array_column(parentArray, columKey, indexKey)
parentArray
: معمولاً یک آرایه چند بعدی است، آرایه ای است که ستون مقادیر را از آن استخراج می کند.
columnKey
: کلید یا شاخص ستون برای استخراج مقادیر از آن. این می تواند یک شاخص عدد صحیح یا یک کلید رشته ای باشد که نام ستون را نشان می دهد.
indexKey
(اختیاری): ستونی که به عنوان شاخص آرایه برگشتی استفاده می شود. اگر حذف شود یا روی null تنظیم شود، از شاخص های عددی استفاده می شود.
مثال زیر از کلید نام آرایه برای ایجاد یک آرایه جدید استفاده می کند:
$pupils = [ ["id" => 1, "name" => "John", "score" => 90], ["id" => 2, "name" => "Jane", "score" => 79], ["id" => 3, "name" => "Will", "score" => 83], ["id" => 4, "name" => "Jill", "score" => 92], ["id" => 5, "name" => "steven", "score" => 100], ]; $arrayFromNameColumn = array_column($pupils, 'name'); print_r($arrayFromNameColumn); /* Output: Array ( [0] => John [1] => Jane [2] => Will [3] => Jill [4] => steven ) */
به یاد داشته باشید که می توانید کلید دیگری را در آرایه ارسال کنید تا مقادیر آن را شاخص های آرایه به دست آمده تبدیل کنید. من از "id"
برای آن استفاده خواهم کرد:
$pupils = [ ["id" => 1, "name" => "John", "score" => 90], ["id" => 2, "name" => "Jane", "score" => 79], ["id" => 3, "name" => "Will", "score" => 83], ["id" => 4, "name" => "Jill", "score" => 92], ["id" => 5, "name" => "steven", "score" => 100], ]; $arrayFromNameColumn = array_column($pupils, "name", "id"); print_r($arrayFromNameColumn); /* Output: Array ( [1] => John [2] => Jane [3] => Will [4] => Jill [5] => steven ) */
تابع in_array()
in_array()
برای تحلیل اینکه آیا یک عنصر خاص در یک آرایه است یا خیر استفاده می شود. دو پارامتر اجباری و یک پارامتر اختیاری نیاز دارد.
در اینجا نحو است:
in_array(itemToSearch, arrayToSearchThrough, strict)
itemToSearch
عنصری است که به دنبال آن هستید. اجباری است
arrayToSearchThrough
آرایه ای است که می خواهید itemToSearch
را در آن جستجو کنید. اجباری هم هست
strict
یک مقدار بولی است که به شما امکان می دهد تعیین کنید که آیا می خواهید جستجو با مقایسه آزاد ( ==
) یا مقایسه دقیق ( ===
) انجام شود. پیش فرض آن false
است.
در اینجا تابع in_array()
در عمل آمده است:
$myFruitsArr1 = ["Apple", "Banana", "Cashew", "Mango"]; var_dump(in_array("Banana", $myFruitsArr1)); // bool(true) var_dump(in_array("banana", $myFruitsArr1)); // bool(false)
از آنجایی که نتیجه in_array()
یک بولی است، معمولاً در حالتهای شرطی استفاده میشود:
$myFruitsArr1 = ["Apple", "Banana", "Cashew", "Mango"]; if (in_array("Banana", $myFruitsArr1)) { echo "Banana is in the array"; // Banana is in the array } else { echo "Banana is not in the array"; }
چگونه از طریق آرایه ها در PHP حلقه بزنیم
پی اچ پی حلقه for
سنتی را برای تکرار از طریق آرایه های نمایه شده و انجمنی فراهم می کند. همچنین میتوانید از یک تابع پاککننده forEach()
برای همین منظور استفاده کنید.
چگونه از طریق یک آرایه نمایه شده حلقه بزنیم
در اینجا نحو اصلی برای حلقه زدن از طریق یک آرایه با حلقه for
آمده است:
for ($i=0; $i < count($arr); $i++) { # do something with $arr ... }
foreach ($arrs as $arr) { # do something with $arr }
در اینجا یک مثال با استفاده از حلقه for
برای حلقه زدن از طریق یک آرایه از رشته ها آورده شده است:
$retiredBallers = ["Pele", "Maradona", "Zidane", "Lampard", "Okocha"]; for ($i = 0; $i < count($retiredBallers); $i++) { echo $retiredBallers[$i] . "<br>"; } /* Output: Pele Maradona Zidane Lampard Okocha */
به همین ترتیب می توانید از طریق اعداد حلقه بزنید:
for ($i = 0; $i < count($myNums); $i++) { echo $myNums[$i] . "<br>"; } /* Output: 45 8 90 2 5 */
همچنین می توانید شاخص هر عنصر آرایه را چاپ کنید:
for ($i = 0; $i < count($myNums); $i++) { echo $myNums[$i] . " is at index " . $i . "<br>"; } /* Output: 45 is at index 0 8 is at index 1 90 is at index 2 2 is at index 3 5 is at index 4 */
فراموش نکنید که می توانید foreach
برای حلقه زدن در هر آرایه نیز استفاده کنید:
foreach ($retiredBallers as $retiredBaller) { echo $retiredBaller . "<br>"; } /* Pele Maradona Zidane Lampard Okocha */
شما می توانید شاخص را از این طریق نیز دریافت کنید:
foreach ($retiredBallers as $key => $retiredBaller) { echo $retiredBaller . " is at index " . $key . "<br>"; } /* Pele is at index 0 Maradona is at index 1 Zidane is at index 2 Lampard is at index 3 Okocha is at index 4 */
چگونه از طریق یک آرایه انجمنی حلقه بزنیم
یک آرایه انجمنی می تواند با مواردی که در اعماق آن قرار گرفته اند پیچیده باشد. پس ، شما باید به جای نمایش همه چیز در آن، آنچه را که می خواهید از آن به دست آورید.
نام و کشور برخی از فوتبالیستهای بازنشسته را از یک آرایه $retiredFootballers
به این شکل به دست آوردم:
$retiredFootballers = [ [ "name" => "Pele", "position" => "Forward", "country" => "Brazil", "club" => "Santos" ], [ "name" => "Diego Maradona", "position" => "Attacking Midfielder", "country" => "Argentina", "club" => "Napoli" ], [ "name" => "Zinedine Zidane", "position" => "Midfielder", "country" => "France", "club" => "Real Madrid" ], [ "name" => "Ronaldinho", "position" => "Attacking Midfielder", "country" => "Brazil", "club" => "Barcelona" ], [ "name" => "David Beckham", "position" => "Midfielder", "country" => "England", "club" => "Manchester United" ], [ "name" => "Jay-Jay Okocha", "position" => "Midfielder", "country" => "Nigeria", "club" => "Bolton Wanderers" ] ]; for ($i = 0; $i < count($retiredFootballers); $i++) { echo $retiredFootballers[$i]["name"] . " is from " . $retiredFootballers[$i]["country"] . "<br>"; echo "<hr>"; }
انجام همین کار با foreach()
تمیزتر است زیرا به متغیر $i
نیاز ندارید:
foreach ($retiredFootballers as $retiredFootballer) { echo $retiredFootballer["name"] . " is from " . $retiredFootballer["country"] . "<br>"; echo "<hr>"; }
چگونه می توان از طریق یک آرایه داخل الگوی HTML حلقه کرد
هر HTML در پرونده PHP شما الگوی پرونده PHP است. این بدان معنی است که می توانید حلقه را در داخل HTML انجام دهید ، زیرا می توانید PHP را در داخل آن HTML بنویسید.
در اینجا نحوه انجام این کار آمده است:
<?php $retiredBallers = ["Pele", "Maradona", "Zidane", "Lampard", "Okocha"]; ?> <h1 class="text-center mt-3 bd-highlight">Looping Through Arrays in PHP</h1> <h2 class="mx-5 mt-5">Some Retired Footballers</h2> <ul class="list-group mx-5" style="width: 25%;"> <!-- The loop --> <?php for ($i = 0; $i < count($retiredBallers); $i++) : ?> <li class="list-group-item"> <?= $retiredBallers[$i] ?> </li> <?php endfor; ?> </ul>
شما می توانید همین کار را با foreach()
انجام دهید:
<?php $retiredBallers = ["Pele", "Maradona", "Zidane", "Lampard", "Okocha"]; ?> <h1 class="text-center mt-3 bd-highlight">Looping Through Arrays in PHP</h1> <h2 class="mx-5 mt-5">Some Retired Footballers</h2> <ul class="list-group mx-5" style="width: 25%;"> <!-- The loop --> <?php foreach ($retiredBallers as $retiredBaller) : ?> <li class="list-group-item"> <?= $retiredBaller ?> </li> <?php endforeach; ?> </ul>
در اینجا به نظر می رسد که در مرورگر به نظر می رسد:
بیایید از foreach()
برای نمایش آرایه انجمنی $retiredFootballers
نیز استفاده کنیم:
<h1 class="text-center mt-3 bd-highlight">Looping Through Arrays in PHP</h1> <h2 class="mx-5 mt-5">Some Retired Footballers</h2> <ul class="list-group mx-5" style="width: 25%;"> <!-- The loop --> <?php foreach ($retiredFootballers as $retiredFootballer) : ?> <li class="list-group-item"> <?= $retiredFootballer["name"] . " is from " . $retiredFootballer["country"] ?> </li> <?php endforeach; ?> </ul>
نتیجه
یادگیری نحوه کار با آرایه ها یک گام اساسی در جهت مهارت در PHP و توسعه وب است. به همین دلیل این کتاب راهنما شما را از طریق قابلیت های مختلف آرایه های PHP ، از آفرینش گرفته تا دستکاری و حلقه ، طی کرد.
اکنون باید با استفاده از آرایه ها برای مدیریت مؤثر داده ها در PHP اطمینان داشته باشید ، خواه برای فهرست های ساده با آرایه های فهرست بندی شده ، یا ساختارهای پیچیده با آرایه های انجمنی و چند بعدی.
با حرکت به جلو ، من شما را تشویق می کنم تا با عملکردهای مختلف آرایه برای بهبود کد خود و مقابله با چالش های مختلف برنامه نویسی ، آزمایش کنید. همچنین ، برای سناریوهای پیچیده تر داده ها ، کاوش در مورد آرایه های چند بعدی و انجمنی را در نظر بگیرید.
هرچه با آرایه های PHP مهارت بیشتری پیدا می کنید ، ادغام آنها با عملیات پایگاه داده می تواند برنامه های وب شما را بیشتر تقویت کند ، پس به دنبال مقاله دوم این سری باشید.
به کدنویسی ادامه دهید!
ارسال نظر