Существуют ли какие-либо структуры данных в php
кроме array
. Возможно ли создать структуру данных, такую как ArrayList
? Если да, просьба указать некоторые ссылки или какую-то реализацию.
Все, что вам нужно знать о массивах, можно найти в документации .
Все доступные функции для массивов перечислены в ссылке на функции .
Некоторые примечания:
В следующем примере я попытался перечислить альтернативы PHP для наиболее распространенных методов ArrayList
:
add(element)
в основном просто add(element)
через $array[] = $element
. Новое значение получает следующий бесплатный числовой индекс (это предпочтительный вариант). Вы также можете использовать array_push($array, $element)
. addAll(ArrayList)
: array_merge($array1, $array2)
. Будьте осторожны при слиянии ассоциативных массивов. Значения для тех же клавиш будут перезаписаны. clone()
: Поскольку массивы не являются объектами, вы «клонируете» массив, просто присваивая его другой переменной:
$a = array(1,2,3); $b = $a;
contains(element)
: in_array($element, $array)
get(index)
: Как и в большинстве языков: $val = $array[index];
indexOf(element)
: array_keys($array, $element)
со значением, которое вы ищете как второй параметр isEmpty()
: empty($array)
remove(index)
: его unset($array[index])
remove(value)
со значением: вы должны сначала получить ключи (см. indexOf
), indexOf
их и использовать unset
. size()
: count($array)
Если вы (или кто-либо еще читающий это) просто хотите (по какой-либо причине) Java, такой как ArrayList для PHP, вы можете использовать это.
Полный источник: 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) }
Я попытался реализовать, вот какой-то простой код:
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]; } } }
с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]; } } }
array( 'key' => 'value', 'key2' => 'value2' )
или
class DataStructure { var $val1; var $val2; } $item = new DataStructure(); $item -> val1 = 'value1';
Я понятия не имею, что такое «arrayList» (звучит Java), но если это список массивов, эквивалент PHP:
array( array( 'item1', 'item2' ), array( 'item1', 'item2' ) )
[редактировать]
Если этот arrayList
является просто массивом, вы можете использовать
array( 'item1', 'item2' )
расширяя класс ArrayObject, вы можете легко создать некоторый базовый класс (например, Vector, Collection of ArrayList).
Ближайшим сходством PHP с классом ArrayList от Java является класс ArrayObject . Имена методов разные, но функциональность между ними довольно близка.
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 ) }