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

آرایه ها در 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 معتبر باشه.

مطالب مشابه

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

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

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

php socket programming

PHP Socket Programming – Part1

برنامه نویسی سوکت یک راه برای ارتباط مانا میان دو node ( کلاینت و سرور ) می باشد. یک سوکت (یا node) تحت یک IP و پورت به...

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

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

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

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

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