Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php数组指针学习笔记(一)

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

WBOY
WBOYasal
2016-07-28 08:29:421019semak imbas

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

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

 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教程有兴趣的朋友有所帮助。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:MyISAM和InnoDB区别Artikel seterusnya:PHP类中 __set 和 _get的用法示例