1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
<?php class CD{ public $singer = ''; public $title = ''; public $songList = array(); public function __construct($singer, $title) { $this->singer = $singer; $this->title = $title; } public function addSong($song) { $this->songList[]= $song; } } class CDSearchBySingerIterator implements \Iterator { private $_cds = array(); private $_valid = false; public function __construct($singer) { $rs = $this->search($singer); $this->init($rs); } private function search($singer) { //不走mysql,直接构造假数据 //select c.id,c.singer,c.title,s.song from cd c left join songs s on c.id=s.cd_id where c.singer='$singer' $arr = array( array('id' => 1, 'singer' => $singer, 'title' => '叶惠美', 'song' => '叶惠美1'), array('id' => 1, 'singer' => $singer, 'title' => '叶惠美', 'song' => '叶惠美2'), array('id' => 1, 'singer' => $singer, 'title' => '叶惠美', 'song' => '叶惠美7'), array('id' => 1, 'singer' => $singer, 'title' => '叶惠美', 'song' => '叶惠美8'), array('id' => 1, 'singer' => $singer, 'title' => '叶惠美', 'song' => '叶惠美9'), array('id' => 1, 'singer' => $singer, 'title' => '叶惠美', 'song' => '叶惠美10'), array('id' => 2, 'singer' => $singer, 'title' => '七里香', 'song' => '七里香1'), array('id' => 2, 'singer' => $singer, 'title' => '七里香', 'song' => '七里香2'), array('id' => 2, 'singer' => $singer, 'title' => '七里香', 'song' => '七里香3'), array('id' => 2, 'singer' => $singer, 'title' => '七里香', 'song' => '七里香4'), array('id' => 2, 'singer' => $singer, 'title' => '七里香', 'song' => '七里香5'), array('id' => 2, 'singer' => $singer, 'title' => '七里香', 'song' => '七里香6'), array('id' => 2, 'singer' => $singer, 'title' => '七里香', 'song' => '七里香7'), array('id' => 2, 'singer' => $singer, 'title' => '七里香', 'song' => '七里香8'), array('id' => 2, 'singer' => $singer, 'title' => '七里香', 'song' => '七里香9'), array('id' => 2, 'singer' => $singer, 'title' => '七里香', 'song' => '七里香10'), array('id' => 1, 'singer' => $singer, 'title' => '叶惠美', 'song' => '叶惠美3'), array('id' => 1, 'singer' => $singer, 'title' => '叶惠美', 'song' => '叶惠美4'), array('id' => 1, 'singer' => $singer, 'title' => '叶惠美', 'song' => '叶惠美5'), array('id' => 1, 'singer' => $singer, 'title' => '叶惠美', 'song' => '叶惠美6') ); return $arr; } private function init($data) { foreach ($data as $v) { if (!isset($this->_cds[$v['id']])) { $this->_cds[$v['id']] = new CD($v['singer'], $v['title']); } $this->_cds[$v['id']]->addSong($v['song']); } } public function next() { return next($this->_cds); } public function rewind() { return reset($this->_cds); } public function valid() { return $this->_valid; } public function current() { return current($this->_cds); } public function key() { return key($this->_cds); } } $cds = new CDSearchBySingerIterator('Jay'); foreach ($cds as $v) { echo '专辑信息如下:<br>'; echo '标题:' . $v->title . '<br>'; echo '歌手:' . $v->singer . '<br>'; foreach ($v->songList as $key => $song) { echo '曲目' . ($key+1) . ':' . $song . '<br>'; } echo '<br>'; } |