3

どのような場合に使用するのがより適切ですか:

$Obj_Array = new ArrayObject(array(), ArrayObject::STD_PROP_LIST);
 $Obj_Array->Key = "Value";

それよりも:

 $Array = array(); 
 $Array['Key'] = "Value"; 

さて、これらは両方とも異なります。調査を行った後でも、従来の配列よりもオブジェクト配列を優先する本当の理由はないとわかっています..

オブジェクト配列が通常の配列よりも多くの利点を提供する方法について、誰かがアクティブな例を見せてくれませんか


さらに、これらのオブジェクト配列が PHP にとってかなり新しいものであることは承知しています。しかし、たとえば、ほぼすべてのデータベース関数は、配列または単一の変数を返します。

$Query = $DB->prepare("SELECT * FROM TBL WHERE col=?");
$Query->bind_param('s',$Variable); 
$Query->execute();
$Query->bind_result($Col1, $Col2, $Col3);
$Query->fetch();
$Query->close(); 

上記の例は、コンテンツを単一の変数として返します。

while ループを使用してオブジェクト配列を作成するには、次のようにします。

$Obj_Array = new ArrayObject(array(), ArrayObject::STD_PROP_LIST);
$Key_Creation = 0;   

$Query = $DB->prepare("SELECT Username,Password FROM TBL WHERE col=?");
$Query->bind_param('s',$Variable); 
$Query->execute();
$Query->bind_result($Col1, $Col2);
while($Query->fetch()){
  $Obj_Array->$Key_Creation = array($Col1,$Col2);
  $Key_Creation++;
}
$Query->close();
4

2 に答える 2

2

ArrayObjectオブジェクトを操作するコードと配列を操作するコードを一緒に動作させる必要がある場合に、コードの一部を変更して他の部分と同じように動作させることが不可能または望ましくない場合に役立ちます。

実際には、コードの 1 つまたは両方の部分を制御している場合、その必要はなく、ArrayObjectそれを使用してもパフォーマンスが低下するだけです。

私の個人的な意見では、これArrayObjectはペストのように避けるべきであり、PHP の疑わしい有用性の中途半端な「機能」の長いリストの 1 つにすぎません。

于 2013-05-18T23:05:13.533 に答える
1

好みのスタイルの問題です。PHP 5 に導入された新しい ArrayObjects は、配列のオブジェクト指向版です。多くのプログラマーはよりオブジェクト指向スタイルのプログラミングを好み、古い配列はオブジェクト指向の世界に適合しません。

ArrayObjects にはわずかなパフォーマンスのペナルティがあるかもしれませんが、php 5.3 ではこれはほぼなくなりました。

于 2013-05-18T23:08:33.660 に答える