除了array之外, php是否有任何数据结构。 是否可以创建数据结构,如ArrayList 如果是这样,请提供一些参考或某种实施方式。

#1楼 票数:47

您可以在文档中找到有关阵列的所有信息

数组的所有可用函数都列在函数参考中

一些说明:

  • 数组最初是PHP中唯一的数据结构。 这就是他们如此灵活的原因。 它们被用作堆栈,队列,数组,列表,哈希表等。 后来PHP介绍了spl datastructures
  • 与Java不同,PHP不是纯粹的OO语言。 数组本身没有可以应用的内置方法。 这必须通过“正常”功能来完成。
  • 数组没有固定的大小。 它们会自动扩展和缩小。

在下面我尝试列出最常见的ArrayList方法的PHP替代方案:

  • 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 ),迭代它们的密钥并使用未unset
  • size()count($array)

#2楼 票数:3

我试着实现,这里有一些简单的代码:

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楼 票数:2

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'
)

#4楼 票数:2

如果您(或其他任何阅读此内容的人)只是想(无论出于什么原因)像Java的ArrayList这样的Java,您可以使用它。

完整资料来源: 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) 
    }

#5楼 票数:1

通过扩展ArrayObject类,您可以非常轻松地创建一些基本类(例如Vector,ArrayList的集合)。

#6楼 票数:0

与Java中的ArrayList类最接近的PHP相似之处是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 )
}

  ask by Cooper translate from so

未解决问题?本站智能推荐:

1回复

在Arraylist的Arraylist中搜索

我正在尝试这款游戏,因为我有多个飞机和细胞代表天空! 一个单元格可以有多个物体(飞机),并且一个单元格具有x,y,z如何获取(x,y,z)某个单元格中最旧的元素? 我使用ArrayList的ArrayList将多个元素存储在一个单元格中,现在我需要搜索这些单元格! 最好的方法是什么?
2回复

在arrayList中查找

我正在尝试为arraylist中的条目项(字母数字值及其哈希码)查找对应的值。 删除了对哈希表的使用,以允许复制对象(键)。 ArrayList<Object[]> pNArrayList = new ArrayList<Object[]>(); 包含
2回复

在ArrayList 中设置值

从我的数据结构课程开始已经有一段时间了,我很难搞清楚这一点。 我知道如果我想从Object[]的ArrayList中获取值,我可以使用 但我似乎无法弄清楚,或在网上找到如何设置一个值。 我是否必须创建一个新对象并将其设置为nameOfArrayList.get(row) ,更改该
4回复

C中的Arraylist无法正常工作

我目前正在编写一个程序来实现C语言中的arraylist(或动态数组)。嗯......我认为我已经完成了70-80%,但是,当我在一对夫妇上测试它时,我发现了一个严重的问题。机器 简而言之,我将一组字符串(char *)插入到我的arraylist中,并尝试在操作几次后显示它们。 但是,
1回复

在ArrayList中查找对象的indexof

我有一个简单的测试代码: 它返回一个错误而不是列表中对象的索引。 为什么会这样,如果不是添加Range而是添加自定义myClass ,那么myClass必须Implement什么才能使其正常工作? 还是无法在ArrayList查找对象?
2回复

PHP中的ArrayList实现

我已经尝试过在PHP中实现ArrayList(Java)的基本功能。Arraylist应该能够添加任何类型的对象(与Java相同),任何人都可以提出改进设计/实现的建议。 这是代码
2回复

如何检查Arraylist中的两个String值是否包含在另一个Arraylist中?

我有一个包含两个String值的Arraylist,我想检查这些值是否都存在于第二个Arraylist中。 出于某种原因,我陷入困境,我无法让我的代码工作。 这是我的代码: 我的if语句正在执行,即使list11中的所有值都不存在于list22中,但只有其中一个。 我的目标是只
2回复

我想通过将 arraylist 传递给 java 中的新堆栈来反向打印 arrayList

此作业要求实现printWordRun以便它打印它可以从输入列表words的开头找到的任何单词 run 。 单词 run 应该以相反的顺序打印,每个单词在一个单独的行上。 PrintWordRun 是一个方法,它接受一个叫做words的参数,它是一个ArrayList<String>