ArrayList en php

existe-il des structures de données php autre que array. Est-il possible de créer une structure de données comme un ArrayList? Dans l'affirmative, veuillez fournir des références ou une sorte de mise en oeuvre.

16
demandé sur giannis christofakis 2010-12-31 16:05:02

6 réponses

Tout ce que vous devez savoir sur les tableaux peut être trouvé dans le documentation.

Toutes les fonctions disponibles pour les tableaux sont répertoriés dans le fonctions de référence.

Quelques remarques:

  • les matrices étaient à l'origine la seule structure de données en PHP. C'est pourquoi ils sont si flexibles. Ils étaient destinés à être utilisés comme pile, queue, tableau, liste, table de hachage et ainsi de suite. Plus tard PHP a introduit le structures de données spl.
  • contrairement à Java, PHP n'est pas un langage OO pur. Un tableau lui-même n'a aucune méthode intégrée que vous pouvez appliquer. Cela doit être fait via des fonctions "normales".
  • les tableaux n'ont pas de taille fixe. Ils développez et réduisez automatiquement.

dans ce qui suit j'ai essayé D'énumérer les alternatives de PHP pour le plus commun ArrayList méthode:

  • add(element) est fondamentalement juste ajoutant à l'aide de $array[] = $element. La nouvelle valeur obtient le prochain index numérique libre (c'est la façon préférée). Vous pouvez également utiliser array_push($array, $element).
  • addAll(ArrayList):array_merge($array1, $array2) dans un sens. Soyez prudent lors de la fusion de tableaux associatifs. Les valeurs pour les mêmes touches seront écrasées.
  • clone(): comme les tableaux ne sont pas des objets, vous "clonez" un tableau en l'assignant simplement à une autre variable:

        $a = array(1,2,3);
        $b = $a;
    
  • contains(element): in_array($element, $array)

  • get(index): Comme dans la plupart des langues: $val = $array[index];
  • indexOf(element):array_keys($array, $element) avec la valeur que vous recherchez comme deuxième paramètre
  • isEmpty():empty($array)
  • remove(index):unset($array[index])
  • remove(value) avec la valeur: vous devez obtenir les clés en premier (voir indexOf), effectuer une itération de plus ils ont les clés et utiliser unset.
  • size(): count($array)
44
répondu Felix Kling 2013-07-19 13:50:26

j'ai essayé de mettre en œuvre, voici un code simple:

class ArrayList {

private $list = array();


public function Add($obj)
{
    array_push($this->list, $obj);
}

public function Remove($key)
{
    if(array_key_exists($key, $this->list))
    {
        unset($this->list[$key]);
    }
}

public function Size()
{
    return count($this->list);
}

public function IsEmpty()
{
    return empty($this->list);
}

public function GetObj($key)
{
    if(array_key_exists($key, $this->list))
    {
        return $this->list[$key];
    }
    else
    {
        return NULL;
    }
}

public function GetKey($obj)
{
    $arrKeys = array_keys($this->list, $obj);

    if(empty($arrKeys))    
    {
        return -1;
    }
    else
    {
        return $arrKeys[0];
    }
}

}
3
répondu Carlos H 2013-11-26 01:29:31

si vous (ou n'importe qui d'autre lisant ceci) voulez simplement (pour n'importe quelle raison) un Java comme ArrayList pour PHP, vous pouvez utiliser ceci.

Source Complète:http://www.phpclasses.org/browse/file/4191.html

    /**
     * ArrayList class
     * @version 0.2
     * @author Tim Anlauf <schranzistorradio@gmx.de>
     * @url http://www.phpclasses.org/browse/file/4191.html
     **/
    class ArrayList {
            function ArrayList($arr="") 
            function addToPos($index, $obj)         
            function add($obj) 
            function addAll($arr) 
            function clear() 
            function contains($obj) 
            function get($index) 
            function indexOf($obj) 
            function isEmpty() 
            function lastIndexOf($obj) 
            function remove($index) 
            function removeRange($fromIndex, $toIndex) 
            function size() 
            function sort() 
            function toArray() 
            function hasNext() 
            function reset() 
            function next() 
            function isInteger($toCheck) 
    }
2
répondu Orwellophile 2012-02-03 08:09:18
array(
    'key' => 'value',
    'key2' => 'value2'
)

ou

class DataStructure {
    var $val1;
    var $val2;
}
$item = new DataStructure();
$item -> val1 = 'value1';

Je n'ai aucune idée de ce qu'est ce "arrayList" (sonne Java), mais si c'est une liste de tableaux, L'équivalent PHP serait :

array(
    array(
        'item1',
        'item2'
    ),
    array(
        'item1',
        'item2'
    )
)

[edit]

Si c' arrayList est tout simplement un tableau, vous pouvez utiliser

array(
    'item1',
    'item2'
)
1
répondu Tom van der Woerdt 2010-12-31 13:08:55

en étendant la classe ArrayObject, vous pourriez être en mesure de créer une classe de base très facilement (comme Vector, Collection de ArrayList).

1
répondu Romain Bessuges-Meusy 2010-12-31 13:35:14

la ressemblance PHP la plus proche de la ArrayList la classe de Java est la ArrayObject classe. Les noms de méthode sont différents, mais la fonctionnalité entre les deux est assez proche.

 ArrayObject implements IteratorAggregate , ArrayAccess , Serializable , Countable {
    /* Constants */
    const integer STD_PROP_LIST = 1 ;
    const integer ARRAY_AS_PROPS = 2 ;
    /* Methods */
    public __construct ([ mixed $input = [] [, int $flags = 0 [, string $iterator_class = "ArrayIterator" ]]] )
    public void append ( mixed $value )
    public void asort ( void )
    public int count ( void )
    public array exchangeArray ( mixed $input )
    public array getArrayCopy ( void )
    public int getFlags ( void )
    public ArrayIterator getIterator ( void )
    public string getIteratorClass ( void )
    public void ksort ( void )
    public void natcasesort ( void )
    public void natsort ( void )
    public bool offsetExists ( mixed $index )
    public mixed offsetGet ( mixed $index )
    public void offsetSet ( mixed $index , mixed $newval )
    public void offsetUnset ( mixed $index )
    public string serialize ( void )
    public void setFlags ( int $flags )
    public void setIteratorClass ( string $iterator_class )
    public void uasort ( callable $cmp_function )
    public void uksort ( callable $cmp_function )
    public void unserialize ( string $serialized )
}
0
répondu Cypher 2014-06-09 21:36:16