This is one stop global knowledge base where you can learn about all the products, solutions and support features.
(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)
(PHP 4, PHP 5, PHP 7, PHP 8)
current — Return the current element in an array
current(array|object $array): mixed
Every array has an internal pointer to its "current" element, which is initialized to the first element inserted into the array.
array
The array.
The
current()
function simply returns the value of the array element that's currently being pointed to by the internal pointer. It does not move the pointer in any way. If the internal pointer points beyond the end of the elements list or the array is empty,
current()
returns
false
.
This function may return Boolean
false
, but may also return a non-Boolean value which evaluates to
false
. Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.
Version | Description |
---|---|
8.1.0 | Calling this function on object s is deprecated. Either use get_mangled_object_vars() on the object first, or use ArrayIterator . |
Example #1 Example use of current() and friends
<?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) { }
?>
Note : The results of calling current() on an empty array and on an array, whose internal pointer points beyond the end of the elements, are indistinguishable from a bool
false
element. To properly traverse an array which may containfalse
elements, see the foreach control structure. To still use current() and properly check if the value is really an element of the array, the key() of the current() element should be checked to be strictly different fromnull
.