💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# **数组指针操作:** ## **key() 返回数组内部指针当前指向元素的键名** 函数返回数组中内部指针指向的当前单元的键名。 但它不会移动指针。如果内部指针超过了元素列表尾部,或者数组是空的,**key()**会返回**`null`** ``` $array = array( 'fruit1' => 'apple', 'fruit2' => 'orange', 'fruit3' => 'grape', 'fruit4' => 'apple', 'fruit5' => 'apple'); // this cycle echoes all associative array // key where value equals "apple" while ($fruit_name = current($array)) { if ($fruit_name == 'apple') { echo key($array), "\n"; } next($array); } ?> ``` 结果: ~~~ fruit1 fruit4 fruit5 ~~~ ## **current() 返回数组中的当前元素(单元)。 别名pos()** ``` $arr=['a','b','c']; var_dump(key($arr));//0 var_dump(current($arr));//a var_dump(next($arr));//b ``` >[danger] foreach 与数组指针是相互独立得(foreach其实就是内部操作指针实现循环得) ``` $arr=['a','b','c']; var_dump(key($arr));//0 var_dump(current($arr));//a var_dump(next($arr));//b $a=[]; foreach ($arr as $key=> $value) { $a[$key]=$value; echo $key."<=>".current($arr)."\r\n"; } var_dump($a);//['a','b','c'] ``` 结果: ``` int(0) string(1) "a" string(1) "b" 0<=>b 1<=>b 2<=>b array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } ``` >[danger]key()与foreach也是相对独立得 ``` // Enter your code here, enjoy! $arr=['a','b','c']; var_dump(key($arr));//0 var_dump(current($arr));//a var_dump(next($arr));//b $a=[]; foreach ($arr as $key=> $value) { $a[$key]=$value; echo $key."<=>".current($arr)."<=>key():".key($arr)."\r\n"; } var_dump($a);//['a','b','c'] ``` 结果: ``` int(0) string(1) "a" string(1) "b" 0<=>b<=>key():1 1<=>b<=>key():1 2<=>b<=>key():1 array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } ``` ## **next() 把指向当前元素的指针移动到下一个元素的位置,并返回移动后元素的值** ## **prev() 把指向当前元素的指针移动到上一个元素的位置,并返回移动后元素的值** ## **end() 将数组内部指针指向最后一个元素,并返回最后一个元素的值(如果成功)** ## **reset() 把数组的内部指针指向第一个元素,并返回第一个元素的值** ## **list() 用数组中的元素为一组变量赋值 "$my\_array=array(""Dog"",""Cat"",""Horse"");** ## **list($a, $b, $c) = $my\_array;" $a, $b, $c为需要赋值的变量 变量分别匹配数组中的值**