Existe-t-il des structures de données dans php
autres que array
. Est-il possible de créer une structure de données telle que ArrayList
? Si tel est le cas, veuillez fournir des références ou une sorte de mise en œuvre.
Tout ce que vous devez savoir sur les tableaux se trouve dans documentation .
Toutes les fonctions disponibles pour les tableaux sont répertoriées dans la référence des fonctions .
Quelques notes:
Dans ce qui suit, j'ai essayé de répertorier les alternatives PHP pour les méthodes les plus courantes ArrayList
:
add(element)
est fondamentalement juste en train d’ajouter via $array[] = $element
. La nouvelle valeur obtient le prochain index numérique libre (c'est la méthode préférée). Vous pouvez également utiliser array_Push($array, $element)
.addAll(ArrayList)
: array_merge($array1, $array2)
en quelque sorte. Soyez prudent lorsque vous fusionnez des tableaux associatifs. Les valeurs pour les mêmes clés seront écrasées.clone()
: Comme les tableaux ne sont pas des objets, vous "clonez" un tableau en l'attribuant 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 second paramètreisEmpty()
: empty($array)
remove(index)
: Son unset($array[index])
remove(value)
with value: Vous devez d'abord obtenir les clés (voir indexOf
), les parcourir et les utiliser et utiliser unset
.size()
: count($array)
J'ai essayé d'implémenter, 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 toute autre personne qui lit ceci) voulez simplement (pour une raison quelconque) un fichier Java tel que ArrayList pour PHP, vous pouvez l'utiliser.
Source complète: http://www.phpclasses.org/browse/file/4191.html
/**
* ArrayList class
* @version 0.2
* @author Tim Anlauf <[email protected]>
* @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)
}
en étendant la classe ArrayObject, vous pourrez peut-être créer facilement une classe de base (telle que Vector, Collection of ArrayList).
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 cette "arrayList" (sonne en Java), mais s'il s'agit d'une liste de tableaux, l'équivalent PHP serait:
array(
array(
'item1',
'item2'
),
array(
'item1',
'item2'
)
)
[modifier]
Si cette arrayList
est simplement un tableau, vous pouvez utiliser
array(
'item1',
'item2'
)
La ressemblance PHP la plus proche de la classe ArrayList de Java est la classe ArrayObject . Les noms de méthodes sont différents, mais les fonctionnalités entre les deux sont assez proches.
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 )
}