php中的ArrayList
在php中的ArrayList,php,data-structures,arraylist,Php,Data Structures,Arraylist,在php中除了array之外还有其他数据结构吗。是否可以创建数据结构,例如ArrayList?如果是,请提供一些参考资料或某种实现方式 array( 'key' => 'value', 'key2' => 'value2' ) 或 我不知道这个“arrayList”是什么(听起来像Java),但如果它是一个数组列表,那么PHP等价物应该是: array( array( 'item1', 'item2' ), a
php
中除了array
之外还有其他数据结构吗。是否可以创建数据结构,例如ArrayList
?如果是,请提供一些参考资料或某种实现方式
array(
'key' => 'value',
'key2' => 'value2'
)
或
我不知道这个“arrayList”是什么(听起来像Java),但如果它是一个数组列表,那么PHP等价物应该是:
array(
array(
'item1',
'item2'
),
array(
'item1',
'item2'
)
)
[编辑]
如果这个arrayList
只是一个数组,那么您可以使用
array(
'item1',
'item2'
)
通过扩展ArrayObject类,您可以非常轻松地创建一些基本类(如Vector、ArrayList集合)。有关数组的所有信息都可以在中找到 中列出了阵列的所有可用函数 一些注意事项:
- 数组最初是PHP中唯一的数据结构。这就是他们如此灵活的原因。它们被用作堆栈、队列、数组、列表、哈希表等。后来PHP引入了
- 与Java不同,PHP不是一种纯粹的OO语言。数组本身没有可以应用的内置方法。这必须通过“正常”功能完成
- 数组没有固定的大小。它们会自动膨胀和收缩
基本上只是通过add(element)
进行追加。新值获取下一个自由数字索引(这是首选方法)。您也可以使用$array[]=$element
:在某种程度上。合并关联数组时要小心。相同键的值将被覆盖addAll(ArrayList)
:由于数组不是对象,您可以通过将数组分配给另一个变量来“克隆”数组:clone()
$a = array(1,2,3); $b = $a;
:包含(元素)
:与大多数语言类似:get(index)
$val=$array[index]代码>
:使用搜索的值作为第二个参数indexOf(element)
:isEmpty()
:其remove(index)
unset($array[index])
with value:您必须首先获取键(请参见remove(value)
),迭代它们的键并使用indexOf
unset
:size()
/**
*阵列列表类
*@version 0.2
*@作者蒂姆·安洛夫
*@urlhttp://www.phpclasses.org/browse/file/4191.html
**/
类数组列表{
函数ArrayList($arr=”“)
函数addToPos($index,$obj)
功能添加($obj)
函数addAll($arr)
函数clear()
函数包含($obj)
函数get($index)
函数索引($obj)
函数isEmpty()
函数lastIndexOf($obj)
函数删除($index)
函数删除范围($fromIndex,$toIndex)
函数大小()
函数排序()
函数toArray()
函数hasNext()
函数重置()
函数next()
函数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];
}
}
}
与Java中的类最相似的PHP是类。方法名称不同,但两者之间的功能相当接近
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 )
}
首先,您需要了解数组和
ArrayList
之间的区别。我认为您需要更多地阅读PHP数组。Java中的ArrayList
提供的额外功能大多内置于PHP数组中,或通过全局函数(例如,sort
)提供。例如,请参见。该链接是Google搜索php数组列表的第二个热门链接。你可以很容易地自己找到它。(参考)有点晚了,但看看这里:数组列表实际上是一个数组,但具有增强的功能。例如,存在预定义的索引方法,即使超过数组大小,也可以帮助在数组中添加新元素。例如,如果大小为5的数组a要添加元素号6,则不必关心重写大小为5+1的新数组中的所有元素以添加最后一个元素的过程。还有排序..etcumm,唯一的数据结构?你的观点如何。我更多的是考虑内置的数据结构。。。但是说实话,我不知道你联系到的那些人有多受欢迎。我从来没有用过它们,它们没有任何意义。嘿@Cooper,把这个答案标记为正确!这解释了PHP中关于数组的所有知识。这对我也有帮助。
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];
}
}
}
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 )
}