Null 8 Arrays
Null 8 Arrays
Mohammed 1
اﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ PHPﻫﻲ ﻃﺮﻳﻘﺔ ﻟﺘﺨﺰﻳﻦ ﻗﻴﻢ ﻣﺘﻌﺪدة
ﺑﻤﺘﻐﻴﺮ واﺣﺪ.
ﻟﻨﻔﺮض ان ﻟﺪﻳﻚ ﻣﻌﻠﻮﻣﺎت ﺷﺨﺺ ﻣﺜﻞ اﻻﺳﻢ ،و اﻟﻌﻤﺮ ،و
اﻟﺴﻜﻦ ،و ﺗﺮﻏﺐ ﺑﺘﺨﺰﻳﻨﻬﺎ ﺑﻤﺘﻐﻴﺮ واﺣﺪ ،ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ
ﺳﻮف ﻧﺴﺘﺨﺪم اﻟﻤﺼﻔﻮﻓﺎت ﻟﺘﺤﻘﻴﻖ ذﻟﻚ.
2
اﻟﻤﺼﻔﻮﻓﺎت
اذا ﻫﻲ ﻋﺒﺎره ﻋﻦ ﻣﺘﻐﻴﺮ ﺧﺎص ،وﻳﺤﻔﻆ أﻛﺜﺮ ﻣﻦ ﻗﻴﻤﺔ
ﻓﻴﻪ ﺑﻨﻔﺲ اﻟﻮﻗﺖ
وﻳﻤﻜﻦ ﺗﺒﺴﻴﻂ اﻟﻤﺼﻔﻮﻓﺎت ﺑﺎﻧﻬﺎ ﻋﺒﺎرة ﻋﻦ ﻣﻔﺎﺗﻴﺢ
Keysوﻗﻴﻢ Valuesﺣﻴﺚ ﻟﻜﻞ ﻣﻔﺘﺎح Keyﻗﻴﻤﺔ
Value
<?php
;)"$cars = array("Volvo", "BMW", "Toyota
echo "I like " . $cars[0] . ", " . $cars[1] . " and " .
;"$cars[2] . ".
>?
3
اﻧﺸﺎء اﻟﻤﺼﻔﻮﻓﺎت
ﻗﺒﻞ اﻻﻧﺸﺎء ﻻﺑﺪ أن ﻧﻌﺮف اﻧﻪ ﺗﻮﺟﺪ ﺛﻼﺛﺔ أﻧﻮاع ﻣﻦ
اﻟﻤﺼﻔﻮﻓﺎت :
Indexed arrays
ﻣﺼﻔﻮﻓﺔ ذات ﻓﻬﺮس رﻗﻤﻲ
Associative arrays
ﻣﺼﻔﻮﻓﺔ ذات ﻓﻬﺮس ﺣﺮﻓﻲ
Multidimensional arrays
ﻣﺼﻔﻮﻓﻪ ذات أﺑﻌﺎد ،أو ﻣﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﻣﺼﻔﻮﻓﺎت
4
اﻧﺸﺎء اﻟﻤﺼﻔﻮﻓﺎت
ﻓﻲ PHPﺗﺴﺘﺨﺪم اﻟﺪال)( ،arrayوذﻟﻚ ﻻﻧﺸﺎء
اﻟﻤﺼﻔﻮﻓﺎت.
6
Indexed arrays
اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ:
ان ﻧﻘﻮم ﺑﺘﻌﻴﻴﻦ اﻟﻤﻔﺎﺗﻴﺢ ﺑﺸﻜﻞ ﻳﺪوي ﻛﺎﻟﺘﺎﻟﻲ:
;'$person[0] = 'Ali
;$person[1] = 29
;' $person[2] = 'Yemen
7
Associative arrays
اﻟﻤﺼﻔﻮﻓﺎت ﻣﻦ اﻟﻨﻮع Associative arraysﺗﺴﺘﺨﺪم
ﻣﺴﻤﻴﺎت ﻟﻠﻤﻔﺎﺗﻴﺢ named keysﻋﻨﺪ ﺗﺨﺰﻳﻦ اﻟﻘﻴﻢ.
8
Associative arrays
اﻟﻄﺮﻳﻘﺔاﻷوﻟﻰ:
ﻧﺴﺘﻄﻴﻊ اﻧﺸﺎء ﻣﺼﻔﻮﻓﺎت ﻣﻦ اﻟﻨﻮع Associative
arraysﺑﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ arrayاو اﻻﻗﻮاس اﻟﻤﺮﺑﻌﺔ
ﻛﺎﻟﺘﺎﻟﻲ:
>="$students = array("Ali"=>"29", "Khaled
;)""30", "Mohammed"=>"35
// OR
; ]"$students = ["Ali"=>"35", "Khaled"=>"37
ﻻﺣﻆ ﻓﻲ اﻷﻣﺜﻠﺔ ان ﻛﻞ اﺳﻢ ﻳﺤﺘﻮي ﻋﻠﻰ ﻗﻴﻤﺔ ﻣﺨﺰﻧﺔ ،
ﺑﺤﻴﺚ اﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺘﻌﺮﻳﻒ اﺳﻢ اﻟﻤﻔﺘﺎح ﺛﻢ اﺳﺘﺨﺪﻣﻨﺎ ﻋﻼﻣﺔ =<
ﻟﺘﺨﺰﻳﻦ اﻟﻘﻴﻤﺔ. 9
Associative arrays
اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ:
ﺗﺨﺰﻳﻦ اﻟﻘﻴﻢ ﻣﺒﺎﺷﺮة إﻟﻰ اﻟﻤﺼﻔﻮﻓﺔ
;"$students['Ali'] = "29
;"$students['Khaled'] = "30
;"$students['Mohammed'] = "35
ﻻﺣﻆ ﻓﻲ اﻷﻣﺜﻠﺔ ان ﻛﻞ اﺳﻢ ﻳﺤﺘﻮي ﻋﻠﻰ ﻗﻴﻤﺔ ﻣﺨﺰﻧﺔ.
وﻧﺴﺘﻄﻴﻊ اﺳﺘﺨﺪام ﻫﺬه اﻟﻤﺴﻤﻴﺎت ﻟﻄﺒﺎﻋﺔ اﻟﻘﻴﻢ اﻟﻤﺨﺰﻧﺔ
ﻛﺎﻟﺘﺎﻟﻲ:
;]'echo "Khaled is " . $students['Khaled
10
Multidimensional arrays
ﻛﻤﺎ ذﻛﺮﻧﺎ ﺳﺎﺑﻘﺎ ﺑﺎن اﻟﻤﺼﻔﻮﻓﺎت ﺑﺸﻜﻞ ﻣﺒﺴﻂ ﻋﺒﺎرة ﻋﻦ
ﻣﻔﺎﺗﻴﺢ وﻗﻴﻢ ،ﺣﻴﺚ ﻟﻜﻞ ﻣﻔﺘﺎح ﻗﻴﻤﺔ ﻣﺨﺰﻧﺔ ،و ﻟﻜﻦ
اﺣﻴﺎﻧﺎ ﺗﺮﻏﺐ ﺑﺘﺨﺰﻳﻦ ﻗﻴﻤﺔ ﺑﺎﺣﺪ اﻟﻤﻔﺎﺗﻴﺢ ﺗﺤﺘﻮي ﻋﻠﻰ
اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻔﺎﺗﻴﺢ ،و اﻟﻘﻴﻢ اﻳﻀﺎ ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﻧﻘﻮم
ﺑﺈﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻟﻨﻮع Multidimensional
.arrays
ﻧﺴﺘﻄﻴﻊ ﺗﺒﺴﻴﻂ ﻫﺬا اﻟﻨﻮع ﺑﺄﻧﻪ ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي
ﻋﻠﻰ ﻣﺼﻔﻮﻓﺔ او اﻛﺜﺮ.
11
Multidimensional arrays
اذا ﻛﺎن ﻟﺪﻳﻨﺎ ﻣﺼﻔﻮﻓﺔ وداﺧﻠﻬﺎ ﺧﺰﻧﺎ ﻣﺼﻔﻮﻓﺎت ﻓﻲ PHP
ﻧﻄﻠﻖ ﻋﻠﻰ ﻫﺬا اﻟﻨﻮع Two-dimensional Arraysوﻟﻮ
ﻛﺎن ﻟﺪﻳﻨﺎ ﻣﺼﻔﻮﻓﺔ وﺑﺪاﺧﻠﻬﺎ ﻣﺼﻔﻮﻓﺎت وﺑﺪاﺧﻞ ﻫﺬه
اﻟﻤﺼﻔﻮﻓﺎت ﺧﺰﻧﺎ اﻳﻀﺎ ﻣﺼﻔﻮﻓﺎت ﻧﻄﻠﻖ ﻋﻠﻴﻬﺎ اﺳﻢ
Three-dimensional array
12
Multidimensional arrays
Two-dimensional Array
$students = array(
array('Ali', 29, 'KSA'),
array('Khaled', 30, 'KSA'),
array('Mohammed', 35, 'KSA')
);
$students = [
['Ali', 29, 'KSA'],
['Khaled', 30, 'KSA'],
['Mohammed', 35, 'KSA']
]; 13
Multidimensional arrays
ﻧﺤﺘﺎج اﻟﻰTwo-dimensional Arrays ﻓﻲ ﻫﺬا اﻟﻨﻮع
:ﻣﻔﺘﺎﺣﻴﻦ ﻟﻠﻮﺻﻮل اﻟﻰ اﻟﻘﻴﻤﺔ وﻋﺮﺿﻬﺎ ﺑﺎﻟﻤﺘﺼﻔﺢ ﻛﺎﻟﺘﺎﻟﻲ
$students = array(
array('Ali', 29, 'KSA'),
array('Khaled', 30, 'KSA'),
array('Mohammed', 35, 'KSA')
);
echo $students[0][0] . " is " . $students[0][1] . " years
old and from " . $students[0][2] . "<br>";
ﻳﺮﺟﻊ ﻛﻞ ﻗﻴﻢ اﻟﻤﺼﻔﻮﻓﺔ اﻷوﻟﻰ 14
اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت
ﻻﺣﻆ ﻓﻲ اﻷﻣﺜﻠﺔ اﻟﺴﺎﺑﻘﺔ ﻗﻤﻨﺎ ﺑﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ echo
ﻟﻄﺒﺎﻋﺔ اﻟﻘﻴﻢ ﻟﻠﻤﺘﺼﻔﺢ ﺑﺎﺳﺘﺨﺪام ﻣﻔﺎﺗﻴﺢ اﻟﻤﺼﻔﻮﻓﺔ
ﻣﺒﺎﺷﺮة ،و ﻟﻜﻦ اﺣﻴﺎﻧﺎ ﻧﺮﻏﺐ ﺑﺎﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺟﻤﻴﻊ اﻟﻌﻨﺎﺻﺮ
اﻟﻤﺨﺰﻧﺔ ﺑﺎﻟﻤﺼﻔﻮﻓﺔ ﺑﺸﻜﻞ دﻳﻨﺎﻣﻴﻜﻲ وأﻛﺜﺮ ﻣﺮوﻧﺔ ،ﻫﻨﺎ
ﺳﻮف ﻧﺴﺘﺨﺪم ﺣﻠﻘﺎت اﻟﺘﻜﺮار Loopﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ
اﻟﻤﺼﻔﻮﻓﺎت.
ﻧﺴﺘﻄﻴﻊ اﺳﺘﺨﺪام ﻛﻞ ﻣﻦ forو foreachﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ
اﻟﻤﺼﻔﻮﻓﺎت ،و ﻟﻜﻦ ﻳﻔﻀﻞ اﺳﺘﺨﺪام foreach؛ و اﻟﺴﺒﺐ
اﻧﻬﺎ ﻣﺨﺼﺼﺔ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت.
15
Indexed arrays
: اذا ﻛﺎﻧﺖ اﻟﻤﺼﻔﻮﻓﺔ ك اﻻﺗﻲ
$person = array('Ali', 'Khaled', 'Mohammed');
// for loop example
for ($i=0; $i < count($person); $i++) {
for ﺑﺎﺳﺘﺨﺪام
echo $person[$i] . '<br>';
}
// foreach example
foreach ($students as $key => $value) {
echo $key . " is " . $value . " years old. <br>"
;
}
17
Multidimensional Array
$students = array( :ﻧﻌﺮف اﻟﻤﺼﻔﻮﻓﺔ ك اﻻﺗﻲ
array('Ali', 29, 'KSA'),
array('Khaled', 30, 'KSA'),
array('Mohammed', 35, 'KSA')
);
ﻟﻠﻮﺻﻮل إﻟﻰ ﻛﻞ ﻗﻴﻢ اﻟﻤﺼﻔﻮﻓﺔforeach ﺑﺎﺳﺘﺨﺪام
// foreach eaxample
foreach ($students as $student) {
echo "<p><b>Student Information</b></p>";
foreach ($student as $key => $value) {
echo $value . "<br>";}} 18
Multidimensional Array
: ﻳﺘﻢ ﻋﺮض ﻗﻴﻢ اﻟﻤﺼﻔﻮﻓﺔ ﻛﻤﺎ ﻳﻠﻲfor ﻋﻦ ﻃﺮﻳﻖ
// for eaxample
for ($row = 0; $row < count($students);
$row++) {
echo "<p><b>Row number $row</b></p>";
for ($col = 0; $col <
count($students[$row]); $col++) {
echo $students[$row][$col] . "<br>";
}
}
19
Array operators
ﻋﻮاﻣﻞ اﻟﻤﺼﻔﻮﻓﺎت
20
ﻋﻮاﻣﻞ اﻟﻤﻘﺎرﻧﺔ
اﻟﻤﻘﺎرﻧﺔ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺎت ﻓﻲ phpﻫﻲ ﻧﻔﺴﻬﺎ ﻋﻮاﻣﻞ
اﻟﻤﻘﺎرﻧﺔ وﻟﻜﻦ ﻣﻤﻜﻦ إﺳﺘﺨﺪاﻣﻬﺎ ﻟﻠﻤﺼﻔﻮﻓﺎت اﻳﻀﺎ وﻳﻮﺟﺪ
ﻋﺎﻣﻞ اﺿﺎﻓﻲ ﻟﺪﻣﺞ ﻣﺼﻔﻮﻓﺘﻴﻦ
21
ﻋﻮاﻣﻞ اﻟﻤﻘﺎرﻧﺔ
Union +
دﻣﺞ اﻟﻤﺼﻔﻮﻓﺔ aﻣﻊ اﻟﻤﺼﻔﻮﻓﻪ b
ﻣﺘﺴﺎوي$a == $b
ﺗﻜﻮن اﻟﻨﺘﻴﺠﺔ trueوﻗﻴﻤﻬﺎ ﻓﻲ اﻟﻤﺘﻐﻴﺮ aﻣﺴﺎوي
ﻟﻤﻔﺎﺗﻴﺢ وﻗﻴﻢ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ اﻟﻤﺘﻐﻴﺮ b
22
ﻋﻮاﻣﻞ اﻟﻤﻘﺎرﻧﺔ
ﻏﻴﺮ ﻣﺘﺴﺎوي
$a != $b
ﺗﺮﺟﻊ ﻗﻴﻤﺔ trueﻛﺎن ﻣﻔﺎﺗﻴﺢ اﻟﻤﺼﻔﻮﻓﺔ وﻗﻴﻤﻬﺎ ﻓﻲ اﻟﻤﺘﻐﻴﺮ aﻻﺗﺴﺎوي
ﻣﻔﺎﺗﻴﺢ وﻗﻴﻢ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ اﻟﻤﺘﻐﻴﺮ b
وﻳﻤﻜﻦ إﺳﺘﺨﺪام اﻟﺮﻣﺰ >< ﻟﻌﺪم اﻟﺘﺴﺎوي
ﻏﻴﺮ ﻣﻄﺎﺑﻖ
$a !== $b
ﻛﺎن ﻣﻔﺎﺗﻴﺢ اﻟﻤﺼﻔﻮﻓﺔ وﻗﻴﻤﻬﺎ وﺗﺮﺗﻴﺒﻬﺎ وﻧﻮع اﻟﺒﻴﺎﻧﺎت ﻓﻲ اﻟﻤﺘﻐﻴﺮ a
ﻻﺗﺴﺎوي ﻣﻔﺎﺗﻴﺢ وﻗﻴﻢ اﻟﻤﺼﻔﻮﻓﺔ وﺗﺮﺗﻴﺐ وﻧﻮع اﻟﺒﻴﺎﻧﺎت ﻓﻲ اﻟﻤﺘﻐﻴﺮ b
وﻳﺴﺘﺨﺪم === ك رﻣﺰ ﻟﺘﻄﺎﺑﻖ اﻟﻤﺼﻔﻮﻓﺎت
23
ﻋﻮاﻣﻞ اﻟﻤﻘﺎرﻧﺔ
//ﻗﻤﻨﺎ ﺑﺪﻣﺞ اﻟﻤﺼﻔﻮﻓﺘﻴﻦ ﻟﻠﻄﺒﺎﻋﺔ
;)print_r($a + $b
//اﻟﻨﺎﺗﺞ falseﻟﻌﺪم ﺗﺴﺎوي اﻟﻤﺼﻔﻮﻓﺘﻴﻦ
;)var_dump($a == $b
//اﻟﻨﺎﺗﺞ falseﻟﻌﺪم ﺗﺘﻄﺎﺑﻖ اﻟﻤﺼﻔﻮﻓﺘﻴﻦ
;)var_dump($a === $b
//اﻟﻨﺎﺗﺞ trueﻟﻌﺪم ﺗﺴﺎوي اﻟﻤﺼﻔﻮﻓﺘﻴﻦ
;)var_dump($a != $b
//اﻟﻨﺎﺗﺞ trueﻟﻌﺪم ﺗﺴﺎوي اﻟﻤﺼﻔﻮﻓﺘﻴﻦ
;)var_dump($a <> $b
//اﻟﻨﺎﺗﺞ trueﻟﻌﺪم ﺗﻄﺎﺑﻖ اﻟﻤﺼﻔﻮﻓﺘﻴﻦ
;)var_dump($a !== $b
24
Functions
25
اﻟﺪوال
count() ﻟﻤﻌﺮﻓﺔ ﻃﻮل اﻟﻤﺼﻔﻮﻓﺔ ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo count($cars);
?>
26
اﻟﺪوال
array_change_key_case()
ﺗﺴﺘﺨﺪم ﻟﺘﻐﻴﻴﺮ
ﺣﺎﻟﻪ اﻟﻤﻔﺎﺗﻴﺢ ﻣﻦ
lowercase or uppercase
27
اﻟﺪوال
)(array_reverse
ﺗﻌﻤﻞ ﻋﻠﻰ ﻋﻜﺲ ﻣﺤﺘﻮﻳﺎت
اﻟﻤﺼﻔﻮﻓﺔ واﺧﺮاﺟﻪ ﺑﺘﺮﺗﻴﺐ ﻋﻜﺴﻲ
28
اﻟﺪوال
)(array_search
ﺗﻌﻤﻞ ﻋﻠﻰ اﻟﺒﺤﺚ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ
ﻋﻦ ﻗﻴﻤﺔ ﻣﻌﻴﻨﻪ،
وﺗﺮﺟﻊ ﻓﻬﺮس اﻟﻘﻴﻤﺔ
29
اﻟﺪوال
)(array_sum
ﺗﻌﻤﻞ ﻋﻠﻰ ﺟﻤﻊ ﻛﻞ اﻟﻘﻴﻢ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ
)(end
ﺗﺠﻌﻞ ﻣﺆﺷﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻳﺸﻴﺮ إﻟﻰ آﺧﺮ ﻋﻨﺼﺮ ﻓﻴﻬﺎ
)(reset
ﺗﺠﻌﻞ ﻣﺆﺷﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻳﺸﻴﺮ إﻟﻰ أول ﻋﻨﺼﺮ ﻓﻴﻬﺎ
30
Any Questions?
31