Heim  >  Artikel  >  Backend-Entwicklung  >  php数组指针学习笔记(一)

php数组指针学习笔记(一)

WBOY
WBOYOriginal
2016-07-28 08:29:421034Durchsuche

有这么一个问题,一个数组队列,数组长度是固定的,当向输入插入元素时,超过最大长度后,数组自动头开始再覆盖填充。

这时候,整个数组就形成了一个环形。如下图。

 php数组指针学习笔记(一)

// 定义一个数组

$test_array = array();
function push_array($value, &$test_array) {
    if (count($test_array)

        // 当数组小于指定长度时,直接添加元素

        $test_array[] = $value;
    } else {

        // 当数组大于指定长度时,使用each取出当前指针的元素,并指针下移

        list($k, $v) = each($test_array);

        // 一般使用取模算法,取得待覆盖的key,然后直接覆盖就可以了

        $k = $k % 12;
        $test_array[$k] = $value;
    }
}
push_array(0,$test_array);
push_array(1,$test_array);
push_array(2,$test_array);
push_array(3,$test_array);
push_array(4,$test_array);
push_array(5,$test_array);
push_array(6,$test_array);
push_array(7,$test_array);
push_array(8,$test_array);
push_array(9,$test_array);
push_array(10,$test_array);
push_array(11,$test_array);
push_array(12,$test_array);
push_array(13,$test_array);
push_array(14,$test_array);
push_array(15,$test_array);
push_array(16,$test_array);
push_array(17,$test_array);
push_array(18,$test_array);
push_array(19,$test_array);
push_array(20,$test_array);
push_array(21,$test_array);
push_array(22,$test_array);
push_array(23,$test_array);
push_array(24,$test_array);
var_dump($test_array);exit;

测试结果:

<span>array(12) {
  [0]=>
  int(24)
  [1]=>
  int(13)
  [2]=>
  int(14)
  [3]=>
  int(15)
  [4]=>
  int(16)
  [5]=>
  int(17)
  [6]=>
  int(18)
  [7]=>
  int(19)
  [8]=>
  int(20)
  [9]=>
  int(21)
  [10]=>
  int(22)
  [11]=>
  int(23)
}</span>

除了each以外,下面的数组指针函数也很好用

  • current() - 返回数组中的当前元素的值
  • end() - 将内部指针指向数组中的最后一个元素,并输出
  • next() - 将内部指针指向数组中的下一个元素,并输出
  • prev() - 将内部指针指向数组中的上一个元素,并输出
  • reset() - 将内部指针指向数组中的第一个元素,并输出

以上就介绍了 php数组指针学习笔记(一),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:MyISAM和InnoDB区别Nächster Artikel:PHP类中 __set 和 _get的用法示例