Home > Backend Development > PHP Tutorial > [PHP source code reading]array_push and array_unshift functions, arrayunshift_PHP tutorial

[PHP source code reading]array_push and array_unshift functions, arrayunshift_PHP tutorial

WBOY
Release: 2016-07-12 08:51:39
Original
1339 people have browsed it

[PHP source code reading]array_push and array_unshift functions, arrayunshift

In PHP, adding elements to an array is also a very common operation, at the end and head of the array respectively. Add elements from the bottom to see how PHP implements array insertion operations internally.

I have more detailed annotations on the PHP source code on github. If you are interested, you can take a look and give it a star. PHP5.4 source code annotations. You can view the added annotations through the commit record.

array_push

<p>int array_push ( array &$array , mixed $value1 [ , mixed $... ] )</p>
Copy after login

The array_push function treats the array parameter as a stack and pushes the passed variables to the end of the array. The length of the array increases with the number of variables pushed in. The following code has meaningful effects:

$array[] = $var;

If you only need to add one element to the array, it is better to use $array[] because it does not require calling a function.

Run the example

<span>$arr</span> = <span>array</span><span>();
</span><span>array_push</span>(<span>$arr</span>, 1, 2, 3); <span>//</span><span> return 3; $arr = [1, 2, 3]</span>
Copy after login

Run steps

The array_push function is relatively simple. It is equivalent to a push operation. Treat the array as a stack, then turn each parameter into a reference, add one to the reference number, and then add it to the end of the array.

The internal implementation flow chart is as follows:

[PHP source code reading]array_push and array_unshift functions, arrayunshift_PHP tutorial$arr = array(1, 2, 3); array_unshift($arr, 4, 5, 6); // 4 5 6 1 2 3

Run steps

<p>1、调用php_splice将数据元素插入到数组头部,用新的哈希表替换就得哈希表并将其销毁</p>
<p>2、如果操作后的stack等于运行时的符号表,则重置哈希表的内部指针</p>
<p>3、stack指向新的哈希表,释放新的哈希表红箭,销毁就得哈希表</p>
Copy after login

Source code interpretation

As can be seen from the above steps, the core step of array_unshift is the php_splice function. For the array_unshift function, php_splice creates a new hash table out_hash during implementation, inserts the list data to be inserted into out_hash first, and then writes the original array data into out_hash, thus realizing the function of inserting data elements in front of the array.

The realized renderings are as follows:

[PHP source code reading]array_push and array_unshift functions, arrayunshift_PHP tutorial
In the process of reading the source code this time, I also studied the hash table data structure and some APIs in PHP, and also supplemented myself with some knowledge of hash tables. I learned that the bottom layer of PHP uses a two-way linked list to handle hash conflicts, and I benefited a lot. I will share more about PHP data structure in the future.

Original article with limited writing style and limited knowledge. If there is anything wrong in the article, please let me know.

If this article is helpful to you, please click to recommend it, thank you^_^

Finally, I have more detailed annotations on the PHP source code on github. If you are interested, you can take a look and give it a star. PHP5.4 source code annotations. You can view the added annotations through the commit record.

For more source code articles, please visit your personal homepage to continue viewing: hoohack

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1129452.htmlTechArticle[PHP source code reading] array_push and array_unshift functions, arrayunshift In PHP, adding elements to an array is also a very Commonly used operations include adding elements to the tail and head of the array,...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template