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.
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 utiliserarray_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ètreisEmpty()
:empty($array)
remove(index)
:unset($array[index])
remove(value)
avec la valeur: vous devez obtenir les clés en premier (voirindexOf
), effectuer une itération de plus ils ont les clés et utiliserunset
.size()
:count($array)
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];
}
}
}
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)
}
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'
)
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).
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 )
}