implements Iterator , 实现Iterator 的 current(); next(); key(); valid(); rewind();
<span> 1</span> <span>php </span><span> 2</span><span>/*</span><span> 3</span><span> *先定义一个数组 </span><span> 4</span><span> *定义第一个位置 $position = 0 </span><span> 5</span><span> *然后返回key 和value, </span><span> 6</span><span> *指向下一个位置 ++$position </span><span> 7</span><span>*/</span><span> 8</span><span>class</span> my<strong>Iterator</strong> <span>implements</span><span> <strong>Iterator</strong>{ </span><span> 9</span><span>//</span><span>先定义一个位置</span><span>10</span><span>private</span><span>$position</span> = 0<span>; </span><span>11</span><span>private</span><span>$array</span><span>; </span><span>12</span><span>13</span><span>public</span><span>function</span> __construct(<span>array</span><span>$array</span><span>){ </span><span>14</span><span>$this</span>-><span>array</span> = <span>$array</span><span>; </span><span>15</span><span> } </span><span>16</span><span>/*</span><span>* </span><span>17</span><span> * 倒带第一个元素的<strong>迭代器</strong> </span><span>18</span><span> * @return void 任何返回值将被忽略. </span><span>19</span><span>*/</span><span>20</span><span>public</span><span>function</span><span>rewind</span><span>(){ </span><span>21</span><span>var_dump</span>(<span>__METHOD__</span><span>); </span><span>22</span><span>$this</span>->position = 0<span>; </span><span>23</span><span> } </span><span>24</span><span>/*</span><span>* </span><span>25</span><span> * 检查当前位置是有效的 </span><span>26</span><span> * @return boolean 返回值将bool型布尔,然后评估 </span><span>27</span><span>*/</span><span>28</span><span>public</span><span>function</span><span> valid(){ </span><span>29</span><span>var_dump</span>(<span>__METHOD__</span><span>); </span><span>30</span><span>//</span><span>判断数组第一个元素是否存在</span><span>31</span><span>return</span><span>isset</span>(<span>$this</span>-><span>array</span>[<span>$this</span>-><span>position]); </span><span>32</span><span> } </span><span>33</span><span>/*</span><span>* </span><span>34</span><span> * 返回当前元素 </span><span>35</span><span> * @return mixed 可以返回任何类型。 </span><span>36</span><span>*/</span><span>37</span><span>public</span><span>function</span><span>current</span><span>(){ </span><span>38</span><span>var_dump</span>(<span>__METHOD__</span><span>); </span><span>39</span><span>//</span><span>返回数组的第一个元素</span><span>40</span><span>return</span><span>$this</span>-><span>array</span>[<span>$this</span>-><span>position]; </span><span>41</span><span> } </span><span>42</span><span>/*</span><span>* </span><span>43</span><span> * 返回当前元素的关键 </span><span>44</span><span> * @return mixed 标量成功,或null失败 </span><span>45</span><span>*/</span><span>46</span><span>public</span><span>function</span><span>key</span><span>(){ </span><span>47</span><span>var_dump</span>(<span>__METHOD__</span><span>); </span><span>48</span><span>//</span><span>返回数组第一个元素的key</span><span>49</span><span>return</span><span>$this</span>-><span>position; </span><span>50</span><span> } </span><span>51</span><span>/*</span><span>* </span><span>52</span><span> * 前进到下一个元素 </span><span>53</span><span> * @return void 任何返回值将被忽略。 </span><span>54</span><span>*/</span><span>55</span><span>public</span><span>function</span><span>next</span><span>(){ </span><span>56</span><span>var_dump</span>(<span>__METHOD__</span><span>); </span><span>57</span> ++ <span>$this</span>-><span>position; </span><span>58</span><span> } </span><span>59</span><span> } </span><span>60</span><span>61</span><span>$array</span>=<span>[ </span><span>62</span> "firstelement", <span>63</span> "secondeleent", <span>64</span> "lastelement" <span>65</span><span> ]; </span><span>66</span><span>67</span><span>$it</span> = <span>new</span> my<strong>Iterator</strong>(<span>$array</span><span>); </span><span>68</span><span>foreach</span> (<span>$it</span><span>as</span><span>$key</span>=><span>$value</span><span>) { </span><span>69</span><span>echo</span><span>$key</span>.' => '.<span>$value</span><span>; </span><span>70</span><span>echo</span> "<br>"<span>; </span><span>71</span> }
执行结果:
以上就介绍了php迭代器,包括了Iterator,迭代器方面的内容,希望对PHP教程有兴趣的朋友有所帮助。