php
にarray
以外のデータ構造がありますか。 ArrayList
などのデータ構造を作成することはできますか?その場合は、いくつかの参照または何らかの実装を提供してください。
配列について知っておくべきことはすべて documentation にあります。
配列で使用可能なすべての関数は、 関数リファレンス にリストされています。
いくつかのメモ:
以下では、最も一般的な 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)
2番目のパラメーターとして検索する値isEmpty()
: empty($array)
remove(index)
:そのunset($array[index])
remove(value)
の値:最初にキーを取得し(indexOf
を参照)、キーを反復処理し、unset
を使用する必要があります。size()
: count($array)
私は実装しようとしましたが、ここにいくつかの簡単なコードがあります:
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];
}
}
}
あなた(またはこれを読んでいる他の人)が(何らかの理由で)PHPのArrayListのようなJava)を単に必要とする場合、これを使用できます。
完全なソース: 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)
}
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、ArrayListのコレクションなど)を簡単に作成できる場合があります。
最も近いPHPに似ている ArrayList クラスfrom Javaは ArrayObject クラスです。メソッド名は異なりますが、2つの機能はかなり似ています。
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 )
}