PHP Array
Use PHP Array as a key & value map
# PHP array contains elements of key/value pair $a = array('text' => 'string', 10 => 4, 'absent' => TRUE); echo $a['text']; # 'string' echo $a[10]; # 4 echo $a['absent']; # 1 echo "$a[text]"; # If the variable is inside double quote "", text does NOT need to be quoted
Accessing PHP Array using index
$a = array('text' => 'string'); echo $a['text']; # 'string' define('text', 'constant'); echo $a[text]; # A common mistake: not the same as $a['text'] # text here refer to the global constant (text)
PHP array key
- Can either be a string or an integer
- Other numeric type will truncate to an integer
Removing (unset) PHP array elements
unset($a[4]); # Delete an element of an array unset($a); # Delete $a
Use PHP Array as a 1-dimensional array
$a1 = array(2, 1, 0); # Without a key, key value starts from 0 and increment by 1 each time # array(3) { [0]=> int(2) [1]=> int(1) [2]=> int(0) } # An array of length 3 with key 0, 1 & 2
Append an element to the end of a PHP array
$a1[] = 4; # Append an element: array(0=>2, 1=>1, 2=>0, 3=>4)
Create an empty PHP array
$a1 = array(); # Empty array
Start a PHP array with a specific key value
$months = array(1=>'Jan', 'Feb', 'Mar', 'Apr'); # Key starts from 1 $a2[3] = 9; # array(1) { [3]=> int(9) }
Create a PHP array with a range of value
$a = range(0, 5); # array(0, 1, 2, 3, 4, 5); $a = range('a', 'z');
Multi-dimensional PHP Array
$a = array("item" => array("text" => "string", 10 => 4, "absent" => TRUE) , 'flag' => TRUE); echo $a['item']['text']; # 'string' echo $a['item'][10]; # 4 echo $a['item']['absent']; # 1
PHP Array indexing
When a key is missing ($a[] = 'text'; ), PHP uses the next available integer index
- Find the maximum integer index (n) used in the array
- Use n+1 as the next index
$a = array(1 => '0', 3 => 'a', 'b', 'c', 'flag' => 'b', 20 => 'y', 'z'); echo $a[3]; # 'a' echo $a[4]; # 'b' echo $a[5]; # 'c' echo $a[21]; # 'z' $a[] = 'd'; # Same as $a[22] = 'd' which 22 is the next index value for $a $a['option'] = 'e';
PHP Array Key & Value Functions
Return all keys in a PHP array
$a = array(3 => 'a', 'b', 'c'); $k = array_keys($a);
Re-index the array with key starts from 0
$a2 = array_values($a);
Check the presence of a key or a value in a PHP array
Find if a key exists in a PHP array
$b = array_key_exists('key_name', $a); # TRUE if key exists $b = isset($a['key_name']); # TRUE if key exists and the value is not NULL
Find if a specific element exists in a PHP array
$a = array('x', 'y', 'z'); $b = in_array('x', $a); # TRUE: 'x' is in $a
Find the key by the PHP array element value
$k = array_search('x', $a); # Return the key for value 'x'
PHP Array Copy, Replace, Insert & Delete
PHP array assignment (PHP array assignment is copy by value)
$a = array('a', 'b', 'c'); $a2 = $a;
- A duplicate copy of the array (copy by value) is made
- Change in one array have no impact on other
$a = array("original"); $b = $a; $a[0] = "new"; // $b[0] will remain as "original"
To copy PHP array by reference
$a3 = &$a; # A variable alias. Changes impact both $a and $a3
Return a sub-set of a PHP array
$r = array_slice($a, 1, 2); # Return an array starting at index 1 with max of 2 elements # array(2) { [0]=> string(1) "b" [1]=> string(1) "c" }
Merge PHP array elements into sub-array of size 2
$r = array_chunk($a, 2); # Merge array elements into sub-array elements of size 2 # array(2) { [0]=> array(2) { [0]=> string(1) "a" [1]=> string(1) "b"} # [1]=> array(1) { [0]=> string(1) "c" } } #
Remove PHP array elements
$r = array_splice($a, 2, 3); # Remove max of 3 elements starting at index 2 from $a (in-place) # The removed elements are stored in $r # $a: array(2) { [0]=> string(1) "a" [1]=> string(1) "b"} # $r: array(1) { [0]=> string(1) "c"} $r = array_splice($a, 2); # Remove elements of $a starting at index 2 to the end $r = array_splice($a, 1, 2, array(4, 5)); # Remove and then insert an array
Pad a PHP array
$r = array_pad($a, 5, 0); # Pad the array with 0 to a max of 5 elements
PHP Array Function
Assign array's element to different variables
$a = array(1, 2, 3); list($v1, $v2, $v3, $v4) = $a; # Assign $v1=$a[0]; $v2=$a[1]; $v3=$a[2]; $v4=NULL;
Un-pack the returned function's array result to a list of PHP variables
list($v1, $v2, $v3, $v4) = some_func(); # some_func() can return an array like return array(1, 3);
Merge 2 PHP arrays
$r = array_merge($a1, $a2); # Merge 2 array with $a1 elements come first # If an element in $a2 has the same key as $a1, $a2 value will be used
PHP Array difference
$a1 = array(1,2); $a2 = array(2,3); $r = array_diff($a1, $a2); # Return an array containing the difference # array(1) { [0]=> int(1) }
Count the number of elements in a PHP array
$t = count($a); # Number of count
Sum all the elements of a PHP array
$total = array_sum($a); # Sum of array elements print_r($a1); # Print the array
Reverse, Flip or Shuffle PHP array elements
$r = array_reverse($a); # Reverse an array $r = array_flip($a); # Flip the key with value shuffle($a); # Randomized the order of the elements
Use function call back to filter out PHP array elements
function is_even ($v) { if (($v%2)==0) { return TRUE; } return FALSE; } $a = array(1, 6, 2, 4); $r = array_filter($a, 'is_even'); # Create another array from $a that has even number only
Create variables from array (or vice versa)
$a = array("v1" => 1, "v2" => 2); # Create variables from array extract($a, EXTR_PREFIX_ALL, "value"); # Same as $value_v1=1; $value_v2 = 2; $v1 = 1; $v2 = 2; # Opposite of extract $a = compact('v1', 'v2'); # array(2) { ["v1"]=> int(1) ["v2"]=> int(2) }
PHP array operation
PHP Array Operation | Description |
---|---|
$a1 + $a2 | Union |
$a1 == $a2 | Equal if both array have the same key/value pairs |
$a1 === $a2 | Equal if both have the same key/value pairs in the same order and of types |
!= <> | Not == |
$a !== $b | Not === |
PHP Array Iteration
Iterate through a PHP array
$months = array(1=>'Jan', 'Feb', 'Mar', 'Apr'); foreach ($months as $month) { echo "$month"; }
Iterate through a PHP array with key & value pair
foreach ($months as $key => $month) { echo "$key $month"; }
Iterate through a PHP array with key & value pair by reference
foreach ($months as &$month) { # Pass by reference $month = strtoupper($month); # so in-place assignment is possible }
without the reference, making change to "$month" will have no impact on the $months array
PHP iterate function
# Reset the iterator to the beginning reset($a); # Iterate each key/value in the array while (list($key, $value) = each($a)) { echo $key, $value; }
PHP Array Iteration Function | Description |
---|---|
current( ) | Current iterator element |
reset( ) | Move back to first element |
next( ) | Move to next element and return it |
prev( ) | Move back and return it |
end( ) | Move to last element and return it |
each( ) | return current key/value as an array and move to next element |
key( ) | key of current element |
PHP array_walk: Calling a function in visiting every element of a PHP array
function visit($value, $key) { ... } function visit2($value, $key, $p1) { ... } $a = array(1, 2, 3); array_walk($a, 'visit'); array_walk($a, 'visit2', 'some parameter');
PHP Array Aggregate features
function sum ($total, $value) { $total += $value; return $total; } $a = array(1, 2, 3); $sum = array_reduce($a, 'sum'); # 6 $sum = array_reduce($a, 'sum', 4); # 10: Start $total with 4
PHP Array Sorting Functions
PHP Array Function | Sorts by | Maintain key/value association | Sorting order |
---|---|---|---|
array_multisort() | value | Not on numeric key | first array |
asort() | value | yes | ASC |
arsort() | value | yes | DESC |
krsort() | key | yes | DESC |
ksort() | key | yes | ASC |
natcasesort() | value | yes | Natural & case insensitive |
natsort() | value | yes | Natural |
rsort() | value | no (key restart from 0) | DESC |
shuffle() | value | no (key restart from 0) | Random |
sort() | value | no (key restart from 0) | ASC |
uasort() | value | yes | User defined |
uksort() | key | yes | User defined |
usort() | value | no (key restart from 0) | User defined |
sort($a);
PHP user define comparator
function custom_sort($a, $b) { if ($a == $b) { return 0; } return (($a < $b) ? -1 : 1); } $a = array (1, 4, 4, 2, 7); uasort($a, 'custom_sort');
Sort array that contain value with both numeric and string (like 'time3', 'time10')
natsort($a); natcasesort($a);
Sort by $a1, then $a2 and last $a3
array_multisort($a1, SORT_ASC, $a2, SORT_DESC, $a3, SORT_DESC);
PHP Array Functions (Quick Reference)
Functions | Description |
---|---|
array_change_key_case | Change the case of the keys |
array_chunk | Split an array into chunks |
array_combine | Create an array using one array as keys and another for values |
array_count_values | Count the number of occurrence for unique key |
array_diff_assoc | Find the difference. Comparing key/value |
array_diff_key | Find the difference. Only comparing key |
array_diff_uassoc | Find the difference with user defined comparator on indexes |
array_diff_ukey | Find the difference with user defined comparator on keys |
array_diff | Difference on an array |
array_fill_keys | Fill an array with value/key |
array_fill | Fill an array with values |
array_filter | Filters elements of an array with a callback function |
array_flip | Flip key/value |
array_intersect_assoc | Intersection of arrays with index check |
array_intersect_key | Intersection of arrays using keys for comparison |
array_intersect_uassoc | Intersection of arrays with index check with a callback function |
array_intersect_ukey | Intersection of arrays using a callback function on the keys |
array_intersect | Intersection of arrays |
array_key_exists | Key exists in an array |
array_keys | Return an array of all keys |
array_map | Call the callback for all elements in an array |
array_merge_recursive | Merge two or more arrays recursively |
array_merge | Merge one or more arrays |
array_multisort | Sort multiple or multi-dimensional arrays |
array_pad | Pad array |
array_pop | Pop the element from an array |
array_product | Product of values in an array |
array_push | Push an array |
array_rand | Pick an element randomly |
array_reduce | Aggregate the array to a single value using a callback function |
array_replace_recursive | Replaces elements of first array by another array recursively |
array_replace | Replaces elements of first array by another array |
array_reverse | Reverse an array |
array_search | Search for a given value and return the key |
array_shift | Shift an element off from the beginning |
array_slice | Slice an array |
array_splice | Slice an array and replace it with other elements |
array_sum | Sum of an array |
array_udiff_assoc | The difference of arrays with index check & compares value with a callback function |
array_udiff_uassoc | The difference of arrays with index check, compares key/value with a callback function |
array_udiff | The difference of arrays comparing value with a callback function |
array_uintersect_assoc | Intersection of arrays with index check, compares value with a callback function |
array_uintersect_uassoc | The intersection of arrays with index check, compares key/values with a callback functions |
array_uintersect | The intersection of arrays, compares value with a callback function |
array_unique | Removes duplicate values |
array_unshift | Prepend elements to the beginning of an array |
array_values | Values of an array |
array_walk_recursive | Call a user function for each element of an array recursively |
array_walk | Call a user function for each element of an array |
array | Create an array |
compact | Create array with variables/values |
count | Count elements in an array |
extract | Import variables from an array |
in_array | Value exists in an array |
list | Assign variables from an array |
range | An array containing a range of values |
shuffle | Shuffle an array |
sizeof | Count of an array |
0 comments:
Post a Comment