تعداد بازدید: 2866

آرایه ها در php

در این مقاله قصد داریم تا آرایه ها رو در php بررسی کنیم و همچنین توابع مرتبط با آرایه ها رو بررسی کنیم.

انواع آرایه در php :

  • آرایه های اندیس دار (Indexed arrays)
  • آرایه های انجمنی (Associative arrays)
  • آرایه های چند بعدی (Multidimensional arrays)

Indexed arrays

آرایه های اندیس دار که کلید آن ها اندیس (index) هست و به صورت پیش فرض از 0 شروع می شود.

$indexed_arr = array('ali','mahdi','abbas');
$indexed_arr[0];
$indexed_arr[1];
$indexed_arr[2];

اندیس های آرایه قابل تعیین از سمت ما هستند:

$indexed_arr = array(10=>'ali',11=>'mahdi',12=>'abbas');
echo $indexed_arr[10];
echo $indexed_arr[11];
echo $indexed_arr[12];

اندیس های تعریف نشده قابل دسترسی نیستند به طور مثال اندیس 0 . پس به طور پیش فرض اندیس ها از 0 شروع می شوند ولی توسط ما قابل تعیین هستند.

Associative arrays

آرایه هایی به صورت کلید – مقدار .

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";

درحقیقت آرایه انجمنی که کلید آن عدد باشد آرایه اندیس دار است.

Multidimensional arrays

به آرایه ای از آرایه ها یا آرایه های چند بعدی یا Multidimensional arrays می گویند.

<?php
$multi_arr = array(
'Germany' => array('lamy','pelikan','FaberCastle'),
'Japan' => array('pilot','uniball','platinum'),
'US' => array('sheifer','parker','cross')
);

نکته مهم : بر خلاف زبان جاوا که باید تمامی عناصر آرایه از یک جنس باشند در زبان php می تواند هرکدام از اعضا از یک جنس باشد.

<?php
$multitype_arr = array('fname'=>'ali','lname'=>'alavi','id'=>1110);

توابع مربوط به مرتب سازی آرایه ها

ورودی تمامی توابع زیر آرایه است و خروجی آن هم آرایه مرتب شده. دقت داشته باشید نوع آرایه ورودی مهم است به ازای هر تابع.

sort : آرایه های اندیس دار را مرتب می کند.

rsort : آرایه های اندیس دار را به صورت معکوس مرتب می کند.

asort : آرایه های انجمنی را بر حسب مقدار مرتب می کند.

arsort : آرایه های انجمنی را بر حسب مقدار به صورت معکوس مرتب می کند.

ksort : آرایه های انجمنی را بر حسب کلید مرتب می کند.

krsort : آرایه های انجمنی را بر حسب کلید به صورت معکوس مرتب می کند.

توابع مربوط به حذف عناصر در آرایه

unset : این تابع یک عنصر از آرایه را به وسیله اندیس آن از آرایه حذف می کند ، که اگر آرایه اندیس داشته باشید یا انجمنی باشد (به وسیله کلید).

<?php
$a = array(1,2,3,4,5);
unset($a[2]);
print_r($a);
/*
Array
(
    [0] => 1
    [1] => 2
    [3] => 4
    [4] => 5
)
*/

به طور مثال در کد بالا آرایه شماره دو حذف شده است.

نکته : این تابع می تواند چندین مورد را برای حذف از آرایه قبول کند:

<?php
unset($a[2],$a[3]);

نکته : تابع unset برای متغیر ها هم کاربرد داره و میشه مقدار اون ها رو NULL کرد.

array_splice : این تابع آرایه را از نقطه شروع خاص به تعداد خاص حذف می کند.

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
array_splice($a1,0,2);
print_r($a1);
/*
  Array ( [0] => purple [1] => orange [c] => blue [d] => yellow ) 
*/

صورت دیگر این تابع به شکل زیر است :

<?php  array_splice($array,$start,$length,$array) ?>

پارامتر های این تابع :

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"purple","b"=>"orange");
array_splice($a1,0,2,$a2);
print_r($a1);
/*
 Array ( [0] => purple [1] => orange [c] => blue [d] => yellow ) 
*/

این تابع یعنی حذف یه سری عضو و جایگزین کردن اون با موارد جدید در مکان جدید. پارامتر های این تابع :

  • پارامتر اول آرایه ای که قراره حذف روش انجام بشه .
  • پارامتر دوم نقطه شروع حذف.
  • پارامتر سوم طول حذف آرایه.
  • پارامتر چهارم آرایه جایگزین.

array_slice : اگر بخواهیم یه قسمتی خاصی از آرایه رو بر اساس اندیس برگردونیم باید از تابع array_slice استفاده کنیم. مثلا از 10 عوض یک آرایه شماره 0 تا 6 آن را می خواهیم.

$categories = array_slice($category_all, 0, 6);

ورود و خروج عضو در آرایه ها

ورود و خروج عضو در آرایه یا از ابتدا انجام میشه یا از انتها .

ورود از ابتدا array_unshift

ورود از انتها array_push

خروج از ابتدا array_shift

خروج از انتها array_pop

array_unshift : اعضایی که به عنوان پارامتر دوم داده میشه به این تابع به آرایه ای که به عنوان پارامتر اول به این تابع داده شده در اول آرایه اول گذاشته میشه.

<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
/*
Array
(
    [0] => apple
    [1] => raspberry
    [2] => orange
    [3] => banana
)
*/

array_push : اعضایی که به عنوان پارامتر دوم داده میشه به این تابع به آرایه ای که به عنوان پارامتر اول به این تابع داده شده در انتهای آرایه اول گذاشته میشه.

<?php
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
/*
Array
(
    [0] => orange
    [1] => banana
    [2] => apple
    [3] => raspberry
)
*/

این تابع معادل کد زیر هست :

<?php
$arr[] = $item;

array_shift : خروج یک عضو از ابتدای یک آرایه ( المان اول آرایه را حذف می کند) :

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
/*
Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
)
*/

array_pop : خروج یک عضو از انتهای یک آرایه ( المان آخر آرایه را حذف می کند ) :

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
/*
Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)
*/

حرکت در میان اعضای یک آرایه

حرکت در میان آرایه در طول یک برنامه بوسیله توابع زیر انجام می گردد (پارامتر تمامی توابع زیر آرایه مربوطه است)

current : عضو جاری را نشان می دهد. اگر تا به حال هیچ حرکتی در میان آرایه انجام نداده باشید میشه عضو اول.

next : هر عضوی که current تا حالا نشون داده بعدیش رو برمیگردونه و از اونجا به بعد current تغییر می کنه.

prev : عضو قبلی current آرایه رو برمیگردونه و current از اونجا به بعد تغییر می کنه.

end : عضو جاری هر جا باشه به انتهای آرایه میره و عضو آخر رو بر میگردونه و current هم از اونجا به بعد میشه عضو آخر.

<?php
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport);    // $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = prev($transport);    // $mode = 'foot';
$mode = end($transport);     // $mode = 'plane';
$mode = current($transport); // $mode = 'plane';

$arr = array();
var_dump(current($arr)); // bool(false)

$arr = array(array());
var_dump(current($arr)); // array(0) { }
?>

اجتماع و اشتراک متمم آرایه ها

توابع این قسمت که عملیات های اجتماع و اشتراک و متمم را انجام می دهد ورودی دو آرایه است و خروجی یک آرایه.

array_merge : این تابع دو آرایه را با هم ادغام می کند که در عملیات ریاضی به آن اجتماع می گوییم.

<?php
$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));
/*
 Array ( [0] => red [1] => green [2] => blue [3] => yellow ) 
*/

array_intersect : این تابع اعضای مشترک دو آرایه را بر می گرداند که در ریاضی به آن عملیات اشتراک گفته می شود.

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");

$result=array_intersect($a1,$a2);
print_r($result);
/*
 Array ( [a] => red [b] => green [c] => blue ) 
*/

array_diff : اعضای غیر مشترک دو آرایه که در ریاضی متمم دو مجموعه به آن گفته می شود.

<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
/*
Array(  [1] => blue )
*/

سایر توابع مربوط به آرایه

array_merge : ادغام دو آرایه . دو تا پارامتر میگیره که هر دو آرایه هستند و آرایه دوم رو میچسبونه به انتهای آرایه اول.

<?php
$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));
/*
Array ( [0] => red [1] => green [2] => blue [3] => yellow ) 
*/

is_array : این تابع ورودی میگیره و بررسی می کنه آرایه هست یا خیر.

count : این تابع ورودی یک آرایه میگیره و تعدادش رو برمیگردونه.(دقت داشته باشید اعضای آرایه از 0 شروع میشه)

explode : این تابع یک رشته به همراه یک جدا کننده میگیره و رشته رو با جداکننده تبدیل به آرایه می کنه (ورودی رشته و جداکننده و خروجی آرایه).

<?php explode ( $delimiter , $string ); ?>

پارامتر های این تابع :

  • delimiter : جداکننده.
  • string : رشته ورودی که در درون خودش از جداکننده (پارامتر بالا) داشته باشه.
<?php
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

implode : این تابع ورودی یک آرایه می گیره و یک جدا کننده و برعکس تابع بالا آرایه رو به رشته تبدیل می کنه.

<?php implode ( string $glue , array $pieces ) ?>

این تابع در کوئری های SQL زمانی که میخواید جستجو داشته باشید استفاده داره . چرا که آرایه از جنس php در SQL نمیشه مستقیم استفاده بشه و بهتره رشته بهش بدیم.

<?php
$id_nums = array(1,6,12,18,24);
$id_nums = implode(", ", $id_nums);
$sqlquery = "Select name,email,phone from usertable where user_id IN ($id_nums)";
// $sqlquery becomes "Select name,email,phone from usertable where user_id IN (1,6,12,18,24)"

extract : این تابع ورودی یک آرایه انجمنی می گیره و به وسیله کلید ها یه سری متغیر از روی آرایه ورودی میسازه.

<?php
$a = "Original";
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";
/*
 $a = Cat; $b = Dog; $c = Horse 
*/

نکته : این تابع بسیار پر کاربرد در ورودی توابع هست. به طور مثال شما ورودی رو به جای این که چندین متغیر قرار بدید یک آرایه انجمنی قرار میدید و به وسیله extract به متغیر ها دسترسی پیدا می کنید و کدتون تمیز تر میشه.

array_search : یک عضو رو درون یک آرایه جستجو می کنه و index اش رو بر میگردونه . (شروع ایندکس گذاری در آرایه از 0 شروع میشود)

<?php array_search ( $needle , $array ) ?>

پارامتر اول عضو مورد جستجو و پارامتر دوم آرایه مد نظر. خروجی عدد است و اگر یافت نشد false رو بر می گردونه.

in_array : جستجوی یک عضو درون یک آرایه . تفاوتش با تابع array_search اینه که در صورت یافتن عضو تنها true بر می گردونه ولی در تابع قبل موقعیتش رو بر میگردوند.

<?php in_array ( $needle , $array ) ?>

array_map : یه تابع خاص رو روی تمامی اعضای یک آرایه اجرا می کنه .

<?php array_map($callback,$array1,$array2,...); ?>

پارامتر های این تابع :

  • callback : این همون تابعیه که قراره روی اعضای آرایه ما اجرا بشه.
  • array : یک یا چند آرایه که تابع پارامتر اول روی اونها اجرا بشه.
<?php
function myfunction($num){
  return($num*$num);
}
$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a));
/*
 Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 ) 
*/

مثلا در تابع بالا تمامی اعضای یک آرایه به توان رسیده اند. در این تابع یک آرایه داده ایم و خروجی هم یک آرایه است.

نکته : اگر اون تابع عملگر قرار باشه دو عضو از دو آرایه به عنوان پارامتر بگیره پس باید دو آرایه به تابع array_map بدیم.

<?php
function show_Spanish($n, $m){
    return("The number $n is called $m in Spanish");
}
$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");

$c = array_map("show_Spanish", $a, $b);
print_r($c);

/*
Array
(
    [0] => The number 1 is called uno in Spanish
    [1] => The number 2 is called dos in Spanish
    [2] => The number 3 is called tres in Spanish
    [3] => The number 4 is called cuatro in Spanish
    [4] => The number 5 is called cinco in Spanish
)
*/

array_value : تبدیل آرایه انجمنی به اندیس دار با حذف کلید و تبدیل آن به اندیس .

<?php
$a=array("Name"=>"Peter","Age"=>"41","Country"=>"USA");
print_r(array_values($a));
/*
 Array ( [0] => Peter [1] => 41 [2] => USA ) 
*/

serialize : این تابع مشترک میان آرایه ها و اشیا هست . برای ثبت یک آرایه در پایگاه داده ما مجاز به استفاده مستقیم از آرایه نیستیم . پس باید اون رو به شکلی در بیاریم که در پایگاه داده ثبت بشه. تابع serialize اون رو به شکل بهینه برای پایگاه داده در میاره و در نقطه مقابل برای بازگشت رشته serialize شده به حالت آرایه ما تابع unserialize رو داریم.

unserialize : رشته serialize شده رو تبدیل به آرایه می کنه. دقت داشته باشید که رشته ورودی باید از نظر قوانین serialize معتبر باشه.

مطالب مشابه

namespace rational in php

منطق Namespace در PHP

دوتابع با نام یکسان Fatal Error است. برای جلوگیری از این خطا می توانید یک prefix ابتدای نام تابع بنویسید تا احتمال...

ftp-protocol-in-php

کار با پروتکل FTP در PHP

یکی دیگر قوانین حاکم بر دنیای وب ( از پروتکل های اینترنت لایه application ) پروتکل ftp است که با استفاده از آن می...

معماری های MVC/HMVC

معماری MVC یک قالب برای پیاده سازی رفتار نرم افزار می باشد که بر پایه Model و Controller و View می باشد. controller...

امنیت و رمزنگاری در پی اچ پی

امنیت و رمزنگاری در php

امنیت و رمز نگاری دو مبحث مهم در برنامه ها به شمار میره. به طور کلی ما باید برای حفاظت باید برنامه هامون در برابر حملات...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای آرایه ها در php

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *