PHP 7.1.0 Released

Array Funktionen

Siehe auch

Siehe auch is_array(), explode(), implode(), split(), preg_split() und unset().

Inhaltsverzeichnis

  • array_change_key_case — Ändert die Groß- oder Kleinschreibung aller Schlüssel in einem Array
  • array_chunk — Splittet ein Array in Teile auf
  • array_column — Return the values from a single column in the input array
  • array_combine — Erzeugt ein Array, indem es ein Array für die Schlüssel und ein anderes für die Werte verwendet
  • array_count_values — Zählt die Werte eines Arrays
  • array_diff_assoc — Berechnet den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung
  • array_diff_key — Berechnet den Unterschied zwischen Arrays, indem es die Schlüssel vergleicht
  • array_diff_uassoc — Berechnet den Unterschied von Arrays mit zusätzlicher Indexprüfung, welche durch eine benutzerdefinierte Callback-Funktion vorgenommen wird
  • array_diff_ukey — Berechnet den Unterschied zwischen Arrays mittels einer Callbackfunktion für den Vergleich der Schlüssel
  • array_diff — Ermittelt die Unterschiede zwischen Arrays
  • array_fill_keys — Befüllt ein Array mit Werten mit den übergebenen Schlüsseln
  • array_fill — Füllt ein Array mit Werten
  • array_filter — Filtert Elemente eines Arrays mittels einer Callback-Funktion
  • array_flip — Vertauscht alle Schlüssel mit ihren zugehörigen Werten in einem Array
  • array_intersect_assoc — Ermittelt die Schnittmenge von Arrays mit Indexprüfung
  • array_intersect_key — Ermittelt die Schnittmenge von Arrays, indem es die Schlüssel vergleicht
  • array_intersect_uassoc — Ermittelt die Schnittmenge von Arrays mit Indexprüfung; vergleicht Indizes mit einer Callbackfunktion
  • array_intersect_ukey — Ermittelt die Schnittmenge zweier Arrays mittels eines durch eine Callbackfunktion durchgeführten Schlüsselvergleiches
  • array_intersect — Ermittelt die Schnittmenge von Arrays
  • array_key_exists — Prüft, ob ein Schlüssel in einem Array existiert
  • array_keys — Liefert alle Schlüssel oder eine Teilmenge aller Schlüssel eines Arrays
  • array_map — Wendet eine Callback-Funktion auf die Elemente von Arrays an
  • array_merge_recursive — Führt ein oder mehrere Arrays rekursiv zusammen
  • array_merge — Führt zwei oder mehr Arrays zusammen
  • array_multisort — Sortiert mehrere oder multidimensionale Arrays
  • array_pad — Füllt ein Array bis auf die angegebene Länge mit einem Wert auf
  • array_pop — Liefert und entfernt das letzte Element eines Arrays
  • array_product — Ermittelt das Produkt von Werten in einem Array
  • array_push — Fügt ein oder mehr Elemente an das Ende eines Arrays an
  • array_rand — Liefert einen oder mehrere zufällige Einträge eines Arrays
  • array_reduce — Iterative Reduktion eines Arrays zu einem Wert mittels einer Callbackfunktion
  • array_replace_recursive — Replaces elements from passed arrays into the first array recursively
  • array_replace — Ersetzt Elemente von übergebenen Arrays im ersten Array
  • array_reverse — Liefert ein Array mit umgekehrter Reihenfolge der Elemente
  • array_search — Durchsucht ein Array nach einem Wert und liefert bei Erfolg den zugehörigen Schlüssel
  • array_shift — Liefert und entfernt das erste Element eines Arrays
  • array_slice — Extrahiert einen Ausschnitt eines Arrays
  • array_splice — Entfernt einen Teil eines Arrays und ersetzt ihn durch etwas anderes
  • array_sum — Liefert die Summe der Werte in einem Array
  • array_udiff_assoc — Ermittelt den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung, vergleicht mittels einer Callbackfunktion
  • array_udiff_uassoc — Ermittelt den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung, vergleicht Daten und Indizes mittels einer Callbackfunktion
  • array_udiff — Ermittelt den Unterschied zwischen Arrays mittels einer Callbackfunktion für den Datenvergleich
  • array_uintersect_assoc — Ermittelt die Schnittmenge von Arrays mit zusätzlicher Indexprüfung, vergleicht Daten mittels einer Callbackfunktion
  • array_uintersect_uassoc — Ermittelt die Schnittmenge von Arrays mit zusätzlicher Indexprüfung, vergleicht Daten und Schlüssel mittels separaten Callbackfunktionen
  • array_uintersect — Ermittelt die Schnittmenge von Arrays, vergleicht Daten mittels einer Callbackfunktion
  • array_unique — Entfernt doppelte Werte aus einem Array
  • array_unshift — Fügt ein oder mehr Elemente am Anfang eines Arrays ein
  • array_values — Liefert alle Werte eines Arrays
  • array_walk_recursive — Wendet eine Benutzerfunktion rekursiv auf jedes Element eines Arrays an
  • array_walk — Wendet eine vom Benutzer gelieferte Funktion auf jedes Element eines Arrays an
  • array — Erstellt ein Array
  • arsort — Sortiert ein Array in umgekehrter Reihenfolge und erhält die Index-Assoziation
  • asort — Sortiert ein Array und erhält die Index-Assoziation
  • compact — Erstellt ein Array mit Variablen und deren Werten
  • count — Zählt alle Elemente eines Arrays oder etwas in einem Objekt
  • current — Liefert das aktuelle Element eines Arrays
  • each — Liefert das aktuelle Paar (Schlüssel und Wert) eines Arrays und rückt den Arrayzeiger vor
  • end — Positioniert den internen Zeiger eines Arrays auf dessen letztes Element
  • extract — Importiert Variablen eines Arrays in die aktuelle Symboltabelle
  • in_array — Prüft, ob ein Wert in einem Array existiert
  • key_exists — Alias von array_key_exists
  • key — Liefert einen Schlüssel eines Arrays
  • krsort — Sortiert ein Array nach Schlüsseln in umgekehrter Reihenfolge
  • ksort — Sortiert ein Array nach Schlüsseln
  • list — Weist Variablen zu, als wären sie ein Array
  • natcasesort — Sortiert ein Array in "natürlicher Reihenfolge", Groß/Kleinschreibung wird ignoriert
  • natsort — Sortiert ein Array in "natürlicher Reihenfolge"
  • next — Rückt den internen Zeiger eines Arrays vor
  • pos — Alias von current
  • prev — Setzt den internen Zeiger eines Arrays um ein Element zurück
  • range — Erstellt ein Array mit einem Bereich von Elementen
  • reset — Setzt den internen Zeiger eines Arrays auf sein erstes Element
  • rsort — Sortiert ein Array in umgekehrter Reihenfolge
  • shuffle — Mischt die Elemente eines Arrays
  • sizeof — Alias von count
  • sort — Sortiert ein Array
  • uasort — Sortiert ein Array mittels einer benutzerdefinierten Vergleichsfunktion und behält Indexassoziationen bei
  • uksort — Sortiert ein Array nach Schlüsseln mittels einer benutzerdefinierten Vergleichsfunktion
  • usort — Sortiert ein Array nach Werten mittels einer benutzerdefinierten Vergleichsfunktion
add a note add a note

User Contributed Notes 9 notes

up
10
dave at davidhbrown dot us
5 years ago
While PHP has well over three-score array functions, array_rotate is strangely missing as of PHP 5.3. Searching online offered several solutions, but the ones I found have defects such as inefficiently looping through the array or ignoring keys.

The following array_rotate() function uses array_merge and array_shift to reliably rotate an array forwards or backwards, preserving keys. If you know you can trust your $array to be an array and $shift to be between 0 and the length of your array, you can skip the function definition and use just the return expression in your code.

<?php
function array_rotate($array, $shift) {
    if(!
is_array($array) || !is_numeric($shift)) {
        if(!
is_array($array)) error_log(__FUNCTION__.' expects first argument to be array; '.gettype($array).' received.');
        if(!
is_numeric($shift)) error_log(__FUNCTION__.' expects second argument to be numeric; '.gettype($shift)." `$shift` received.");
        return
$array;
    }
   
$shift %= count($array); //we won't try to shift more than one array length
   
if($shift < 0) $shift += count($array);//handle negative shifts as positive
   
return array_merge(array_slice($array, $shift, NULL, true), array_slice($array, 0, $shift, true));
}
?>
A few simple tests:
<?php
$array
=array("foo"=>1,"bar"=>2,"baz"=>3,4,5);

print_r(array_rotate($array, 2));
print_r(array_rotate($array, -2));
print_r(array_rotate($array, count($array)));
print_r(array_rotate($array, "4"));
print_r(array_rotate($array, -9));
?>
up
5
kolkabes at googlemail dot com
4 years ago
Short function for making a recursive array copy while cloning objects on the way.

<?php
function arrayCopy( array $array ) {
       
$result = array();
        foreach(
$array as $key => $val ) {
            if(
is_array( $val ) ) {
               
$result[$key] = arrayCopy( $val );
            } elseif (
is_object( $val ) ) {
               
$result[$key] = clone $val;
            } else {
               
$result[$key] = $val;
            }
        }
        return
$result;
}
?>
up
1
renatonascto at gmail dot com
8 years ago
Big arrays use a lot of memory possibly resulting in memory limit errors. You can reduce memory usage on your script by destroying them as soon as you´re done with them. I was able to get over a few megabytes of memory by simply destroying some variables I didn´t use anymore.
You can view the memory usage/gain by using the funcion memory_get_usage(). Hope this helps!
up
0
callmeanaguma at gmail dot com
3 years ago
If you need to flattern two-dismensional array with single values assoc subarrays, you could use this function:

<?php
function arrayFlatten($array) {
       
$flattern = array();
        foreach (
$array as $key => $value){
           
$new_key = array_keys($value);
           
$flattern[] = $value[$new_key[0]];
        }
        return
$flattern;
}
?>
up
-6
mo dot longman at gmail dot com
9 years ago
to 2g4wx3:
i think better way for this is using JSON, if you have such module in your PHP. See json.org.

to convert JS array to JSON string: arr.toJSONString();
to convert JSON string to PHP array: json_decode($jsonString);

You can also stringify objects, numbers, etc.
up
-6
ob at babcom dot biz
10 years ago
Here is a function to find out the maximum depth of a multidimensional array.

<?php
// return depth of given array
// if Array is a string ArrayDepth() will return 0
// usage: int ArrayDepth(array Array)

function ArrayDepth($Array,$DepthCount=-1,$DepthArray=array()) {
 
$DepthCount++;
  if (
is_array($Array))
    foreach (
$Array as $Key => $Value)
     
$DepthArray[]=ArrayDepth($Value,$DepthCount);
  else
    return
$DepthCount;
  foreach(
$DepthArray as $Value)
   
$Depth=$Value>$Depth?$Value:$Depth;
  return
$Depth;
}
?>
up
-8
oliverSPAMMENOT at e-geek dot com dot au
6 years ago
Function to pretty print arrays and objects. Detects object recursion and allows setting a maximum depth. Based on arraytostring and u_print_r from the print_r function notes. Should be called like so:

<?php
egvaluetostring
($value)   //no max depth, or
egvaluetostring($value, $max_depth)   //max depth set

function egvaluetostring($value, $max_depth, $key = NULL, $depth = 0, $refChain = array()) {
  if(
$depth > 0)
   
$tab = str_repeat("\t", $depth);
 
$text .= $tab . ($key !== NULL ? $key . " => " : "");
 
  if (
is_array($value) || is_object($value)) {
   
$recursion = FALSE;
    if (
is_object($value)) {
      foreach (
$refChain as $refVal) {
        if (
$refVal === $value) {
         
$recursion = TRUE;
          break;
        }
      }
     
array_push($refChain, $value);
    }
   
   
$text .= (is_array($value) ? "array" : "object") . " ( ";
   
    if (
$recursion) {
     
$text .= "*RECURSION* ";
    }
    elseif (isset(
$max_depth) && $depth >= $max_depth) {
     
$text .= "*MAX DEPTH REACHED* ";
    }
    else {
      if (!empty(
$value)) {
       
$text .= "\n";
        foreach (
$value as $child_key => $child_value) {
         
$text .= egvaluetostring($child_value, $max_depth, (is_array($value) ? "[" : "") . $child_key . (is_array($value) ? "]" : ""), $depth+1, $refChain) . ",\n";
        }
       
$text .= "\n" . $tab;
      }
    }
   
   
$text .= ")";
   
    if (
is_object($value)) {
     
array_pop($refChain);
    }
  }
  else {
   
$text .= "$value";
  }

  return
$text;
}
?>
up
-10
cyberchrist at futura dot net
9 years ago
Lately, dealing with databases, I've been finding myself needing to know if one array, $a, is a proper subset of $b.

Mathematically, this is asking (in set theory) [excuse the use of u and n instead of proper Unicode):

( A u B ) n ( ~ B )

What this does is it first limits to known values, then looks for anything outside of B but in the union of A and B (which would be those things in A which are not also in B).

If any value exists in this set, then A is NOT a proper subset of B, because a value exists in A but not in B.  For A to be a proper subset, all values in A must be in B.

I'm sure this could easily be done any number of ways but this seems to work for me.  It's not got a lot of error detection such as sterilizing inputs or checking input types.

// bool array_subset( array, array )
// Returns true if $a is a proper subset of $b, returns false otherwise.

function array_subset( $a, $b )
{
    if( count( array_diff( array_merge($a,$b), $b)) == 0 )
        return true;
    else
        return false;
}
up
-8
nicoolasens at gmail dot com
1 year ago
/*to change an index without rewriting the whole table and leave at the same place.
*/
<?php
function change_index(&$tableau, $old_key, $new_key) {
   
$changed = FALSE;
   
$temp = 0;
    foreach (
$tableau as $key => $value) {
        switch (
$changed) {
            case
FALSE :
               
//creates the new key and deletes the old
               
if ($key == $old_key) {
                   
$tableau[$new_key] = $tableau[$old_key];
                    unset(
$tableau[$old_key]);
                   
$changed = TRUE;
                }
                break;

            case
TRUE :
               
//moves following keys
               
if ($key != $new_key){
               
$temp= $tableau[$key];
                unset(
$tableau[$key]);
               
$tableau[$key] = $temp;
                break;
                }
                else {
$changed = FALSE;} //stop
       
}
    }
   
array_values($tableau); //free_memory
}

//Result :
$tableau = array(1, 2 , 3, 4,5, 6, 7, 8, 9, 10);
$res = print_r($tableau, TRUE);
$longueur = strlen($res) -1;
echo
"Old array :\n" . substr($res, 8, $longueur) . "\n" ;

change_index ($tableau, 2, 'number 2');
$res = print_r($tableau, TRUE);
$longueur = strlen($res) -10;
echo
"New array :\n" . substr($res, 8, $longueur) . "\n" ;

/*
Old array :
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
)

New array :
    [0] => 1
    [1] => 2
    [numéro 2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
*/
?>
To Top