This is one stop global knowledge base where you can learn about all the products, solutions and support features.
(PHP 4, PHP 5, PHP 7, PHP 8)
array_walk — Apply a user supplied function to every member of an array
array_walk(array|object &$array, callable $callback, mixed $arg = null): bool
Applies the user-defined
callback
function to each element of the
array
array.
array_walk()
is not affected by the internal array pointer of
array
.
array_walk()
will walk through the entire array regardless of pointer position.
array
The input array.
callback
Typically,
callback
takes on two parameters. The
array
parameter's value being the first, and the key/index second.
Note :
If
callback
needs to be working with the actual values of the array, specify the first parameter ofcallback
as a reference. Then, any changes made to those elements will be made in the original array itself.
Note :
Many internal functions (for example strtolower() ) will throw a warning if more than the expected number of argument are passed in and are not usable directly as a
callback
.
Only the values of the
array
may potentially be changed; its structure cannot be altered, i.e., the programmer cannot add, unset or reorder elements. If the callback does not respect this requirement, the behavior of this function is undefined, and unpredictable.
arg
If the optional
arg
parameter is supplied, it will be passed as the third parameter to the
callback
.
Returns
true
.
As of PHP 7.1.0, an
ArgumentCountError
will be thrown if the
callback
function requires more than 2 parameters (the value and key of the array member), or more than 3 parameters if the
arg
is also passed. Previously, in this case an error of level E_WARNING would be generated each time
array_walk()
calls
callback
.
Version | Description |
---|---|
8.0.0 |
If
callback
expects the second or third parameter to be passed by reference, this function will now emit an
E_WARNING
.
|
Example #1 array_walk() example
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
function test_alter(&$item1, $key, $prefix)
{
$item1 = "$prefix: $item1";
}
function test_print($item2, $key)
{
echo "$key. $item2\n";
}
echo "Before ...:\n";
array_walk($fruits, 'test_print');
array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";
array_walk($fruits, 'test_print');
?>
The above example will output:
Before ...: d. lemon a. orange b. banana c. apple ... and after: d. fruit: lemon a. fruit: orange b. fruit: banana c. fruit: apple
Example #2 array_walk() example using anonymous function
<?php
$elements = ['a', 'b', 'c'];
array_walk($elements, function ($value, $key) {
echo "{$key} => {$value}\n";
});
?>
The above example will output:
0 => a 1 => b 2 => c
(PHP 5, PHP 7, PHP 8)
array_walk_recursive — Apply a user function recursively to every member of an array
array_walk_recursive(array|object &$array, callable $callback, mixed $arg = null): bool
Applies the user-defined
callback
function to each element of the
array
. This function will recurse into deeper arrays.
array
The input array.
callback
Typically,
callback
takes on two parameters. The
array
parameter's value being the first, and the key/index second.
Note :
If
callback
needs to be working with the actual values of the array, specify the first parameter ofcallback
as a reference. Then, any changes made to those elements will be made in the original array itself.
arg
If the optional
arg
parameter is supplied, it will be passed as the third parameter to the
callback
.
Returns
true
on success or
false
on failure.
Example #1 array_walk_recursive() example
<?php
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
function test_print($item, $key)
{
echo "$key holds $item\n";
}
array_walk_recursive($fruits, 'test_print');
?>
The above example will output:
a holds apple b holds banana sour holds lemon
You may notice that the key '
sweet
' is never displayed. Any key that holds an
array
will not be passed to the function.
(PHP 4, PHP 5, PHP 7, PHP 8)
arsort — Sort an array in descending order and maintain index association
arsort(array &$array, int $flags = SORT_REGULAR): bool
Sorts
array
in place in descending order, such that its keys maintain their correlation with the values they are associated with.
This is used mainly when sorting associative arrays where the actual element order is significant.
Note :
If two members compare as equal, they retain their original order. Prior to PHP 8.0.0, their relative order in the sorted array was undefined.
Note :
Resets array's internal pointer to the first element.
array
The input array.
flags
The optional second parameter
flags
may be used to modify the sorting behavior using these values:
Sorting type flags:
SORT_REGULAR
- compare items normally; the details are described in the comparison operators section
SORT_NUMERIC
- compare items numerically
SORT_STRING
- compare items as strings
SORT_LOCALE_STRING
- compare items as strings, based on the current locale. It uses the locale, which can be changed using
setlocale()
SORT_NATURAL
- compare items as strings using "natural ordering" like
natsort()
SORT_FLAG_CASE
- can be combined (bitwise OR) with
SORT_STRING
or
SORT_NATURAL
to sort strings case-insensitively
Always returns
true
.
Example #1 arsort() example
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
The above example will output:
a = orange d = lemon b = banana c = apple
The fruits have been sorted in reverse alphabetical order, and the index associated with each element has been maintained.
(PHP 4, PHP 5, PHP 7, PHP 8)
asort — Sort an array in ascending order and maintain index association
asort(array &$array, int $flags = SORT_REGULAR): bool
Sorts
array
in place in ascending order, such that its keys maintain their correlation with the values they are associated with.
This is used mainly when sorting associative arrays where the actual element order is significant.
Note :
If two members compare as equal, they retain their original order. Prior to PHP 8.0.0, their relative order in the sorted array was undefined.
Note :
Resets array's internal pointer to the first element.
array
The input array.
flags
The optional second parameter
flags
may be used to modify the sorting behavior using these values:
Sorting type flags:
SORT_REGULAR
- compare items normally; the details are described in the comparison operators section
SORT_NUMERIC
- compare items numerically
SORT_STRING
- compare items as strings
SORT_LOCALE_STRING
- compare items as strings, based on the current locale. It uses the locale, which can be changed using
setlocale()
SORT_NATURAL
- compare items as strings using "natural ordering" like
natsort()
SORT_FLAG_CASE
- can be combined (bitwise OR) with
SORT_STRING
or
SORT_NATURAL
to sort strings case-insensitively
Always returns
true
.
Example #1 asort() example
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
The above example will output:
c = apple b = banana d = lemon a = orange
The fruits have been sorted in alphabetical order, and the index associated with each element has been maintained.
(PHP 4, PHP 5, PHP 7, PHP 8)
compact — Create array containing variables and their values
compact(array|string $var_name, array|string ...$var_names): array
Creates an array containing variables and their values.
For each of these, compact() looks for a variable with that name in the current symbol table and adds it to the output array such that the variable name becomes the key and the contents of the variable become the value for that key. In short, it does the opposite of extract() .
Note :
Before PHP 7.3, any strings that are not set will silently be skipped.
var_name
var_names
compact() takes a variable number of parameters. Each parameter can be either a string containing the name of the variable, or an array of variable names. The array can contain other arrays of variable names inside it; compact() handles it recursively.
Returns the output array with all the variables added to it.
compact() issues an E_NOTICE level error if a given string refers to an unset variable.
Version | Description |
---|---|
7.3.0 | compact() now issues an E_NOTICE level error if a given string refers to an unset variable. Formerly, such strings have been silently skipped. |
Example #1 compact() example
<?php
$city = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";
$location_vars = array("city", "state");
$result = compact("event", $location_vars);
print_r($result);
?>
The above example will output:
Array ( [event] => SIGGRAPH [city] => San Francisco [state] => CA )
Note : Gotcha
Because variable variables may not be used with PHP's Superglobal arrays within functions, the Superglobal arrays may not be passed into compact() .
(PHP 4, PHP 5, PHP 7, PHP 8)
count — Counts all elements in an array or in a Countable object
count(Countable|array $value, int $mode = COUNT_NORMAL): int
Counts all elements in an array when used with an array. When used with an object that implements the Countable interface, it returns the return value of the method Countable::count() .
value
An array or Countable object.
mode
If the optional
mode
parameter is set to
COUNT_RECURSIVE
(or 1),
count()
will recursively count the array. This is particularly useful for counting all the elements of a multidimensional array.
count()
can detect recursion to avoid an infinite loop, but will emit an
E_WARNING
every time it does (in case the array contains itself more than once) and return a count higher than may be expected.
Returns the number of elements in
value
. Prior to PHP 8.0.0, if the parameter was neither an
array
nor an
object
that implements the
Countable
interface,
1
would be returned, unless
value
was
null
, in which case
0
would be returned.
Version | Description |
---|---|
8.0.0 |
count()
will now throw
TypeError
on invalid countable types passed to the
value
parameter.
|
7.2.0 |
count()
will now yield a warning on invalid countable types passed to the
value
parameter.
|
Example #1 count() example
<?php
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
var_dump(count($a));
$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
var_dump(count($b));
?>
The above example will output:
int(3) int(3)
Example #2 count() non Countable|array example (bad example - don't do this)
<?php
$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
var_dump(count($b));
var_dump(count(null));
var_dump(count(false));
?>
The above example will output:
int(3) int(0) int(1)
Output of the above example in PHP 7.2:
int(3) Warning: count(): Parameter must be an array or an object that implements Countable in … on line 12 int(0) Warning: count(): Parameter must be an array or an object that implements Countable in … on line 14 int(1)
Output of the above example in PHP 8:
int(3) Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable .. on line 12
Example #3 Recursive count() example
<?php
$food = array('fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard', 'pea'));
// recursive count
var_dump(count($food, COUNT_RECURSIVE));
// normal count
var_dump(count($food));
?>
The above example will output:
int(8) int(2)
Example #4 Countable object
<?php
class CountOfMethods implements Countable
{
private function someMethod()
{
}
public function count(): int
{
return count(get_class_methods($this));
}
}
$obj = new CountOfMethods();
var_dump(count($obj));
?>
The above example will output:
int(2)