パスワードを忘れた? アカウント作成
450094 journal

meraの日記: デザインパターン

日記 by mera
<?php

/*
Javaのデザインパタンの本を読みながら一晩中コーディングしてました。 おぉ、この部分はこのデザインパタンが適用できる、ってな感じで。 PHPだからJavaのがそのままもってこれるわけじゃないけど考え方とかはものすごく参考になるかも。とりあえずPHPイテレータの試作版とか作ってみた
*/

class Iterator {
  var $stKeys ;
  var $iIndex ;

  function Iterator( &$oArray ) {
    $this->stKeys = array_keys( $oArray ) ;
    $this->iIndex = 0 ;
  }

  function next() {
    if( $this->iIndex < count( $this->stKeys ) ) {
      $stKey = $this->stKeys[ $this->iIndex ] ;
      $this->iIndex++ ;
      return $stKey ;
    } else {
      return false ;
    }
  }
}

// てな感じのクラスを利用するとこんな感じで使用可能

$oIt = new Iterator( $配列変数名 ) ;
while( $stKey = $oIt->next() ) {
  echo $stkey . "=" . $配列変数名[$stKey] . "<br>\n" ;
}

// でも、普通に書いてもあんましコーディングの手間は変わらない。こんな感じ

reset( $配列変数名 ) ;
while( list( $stKey, $stValue) = each( $配列変数名 ) ) {
  echo $stKey . "=" . $stValue . "<br>\n" ;
}

/*
前者は数えてる最中に配列内容に追加・削除等更新があったらずれが生じてしまうのでそこらへん気ぃつけないとダメかも。後者は数えてる最中に別のところから数えるというワザが使えないのと、かならず内部配列読み出しポインタをresetでクリアしないといけないのが注意かも。
*/

?>
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...