array
以外のデータ構造体はphp
にありますか? ArrayList
のようなデータ構造を作成することは可能ですか?もしそうなら、いくつかの参考文献や何らかの実装を提供してください。ArrayList in PHP
答えて
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'
)
配列リストactullyは配列ですが拡張機能があります。配列のサイズを超えていても配列の新しい要素を追加するのに役立つpredefindeメソッドが存在する場合などです。たとえば、配列aのサイズが5で、要素番号6を追加する場合は、最後の要素を追加するために、サイズ5 + 1の新しい配列のすべての要素を書き直します。また、ソート.etc – Cooper
ArrayObjectクラスを拡張することで、簡単に基本クラスを作成することができます(Vector、Collection of ArrayListなど)。
アレイについて知りたいことはすべてdocumentationにあります。
配列の利用可能なすべての機能は、functions referenceにリストされています。
いくつかの注意:
- 配列はもともとPHPで唯一のデータ構造でした。それが彼らがとても柔軟である理由です。それらは、スタック、キュー、配列、リスト、ハッシュテーブルなどとして使用されることを意図していました。 PHPの後半にspl Datastructuresが導入されました。
- Javaとは異なり、PHPは純粋なOO言語ではありません。配列自体には、適用可能な組み込みのメソッドはありません。これは、「通常の」機能を介して行われなければならない。
- 配列には固定サイズがありません。自動的に伸縮します。以下で
私は、最も一般的なArrayList
methodsのための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()
:PHP用のArrayListのようなcount($array)
あなた(または他の誰がこれを読んで)あれば、単純に(何らかの理由で)望んでいる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)
}
私が実装しようとした、ここでいくつかの簡単なコードです:
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からArrayListクラスに最も近いPHPらしさは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)
}
- 1. Arraylist in Session
- 2. ArrayListソートin java
- 3. JSON ArrayList in Jersey
- 4. 2D ArrayList in java
- 5. GotonJsonとArrayList in Kotlin
- 6. "in row" in "for loop" from php
- 7. PHP in Templateクラス
- 8. json encode in php
- 9. mysqldump.exe in PHP
- 10. JAVA DES in PHP
- 11. Array Object in PHP
- 12. Explain - > in PHP
- 13. FreeType Extension in PHP
- 14. inside foreach in PHP
- 15. paypal integration in php
- 16. PHP - sleep()in milliseconds
- 17. PHP require_once in back
- 18. RenderBody in php
- 19. Echo JSON in PHP
- 20. penthgateway in php
- 21. monkey patch in php
- 22. sinhala unicode in PHP
- 23. cfhttp "POST" in PHP
- 24. DLMS/COSEM in PHP
- 25. concat in php codeigniter
- 26. DiffInDays in Carbon php
- 27. double semicolon in php
- 28. json stripping in php
- 29. preg_replace usage in php
- 30. Page Navigation in PHP
まず、配列と 'ArrayList'の違いを知る必要があります。 – BoltClock
私はJavaでそれを知っています – Cooper
私はあなたがPHP配列についてもっと読んでいく必要があると思います。 Javaで 'ArrayList'によって提供される余分な機能は、ほとんどの場合、PHP配列に組み込まれているか、グローバル関数(例えば' sort')で利用可能です。たとえば、http://php.net/manual/en/language.types.array.phpを参照してください。そのリンクは、Google検索の2番目のヒットであった:PHP配列リスト。あなたは簡単にそれを見つけることができました。 –