Home Backend Development PHP Tutorial Notes on array_diff function

Notes on array_diff function

Jul 29, 2016 am 09:10 AM
name settings true

array_diff — Calculate the difference of arrays

 Description:

array array_diff ( array $array1 , array y $array2 [, array $. .. ] ) Comparison returns values ​​that are in array1 but not in array2 or any other parameter array. Note that the key names remain unchanged.

Note: This function only checks one dimension of the multi-dimensional array. If you want to compare deeper dimensions, you need to write another function. Today's work encountered such a need, so I wrote a function to compare deeper dimensions.

<?<span>php
</span><span>header</span>("Content-type:text/html;charset=utf-8"<span>);
</span><span>$json1</span>='{ "filedir":"default", "pages" : [ { "name" : "首页", "blocks":[ { "name":"头部标题栏", "blocktype":"title_bar", "settings":{ "is_show":true, "bg_color":"#1eb7a4", "content_switch":true, "content":"", "bg_url":"", "color":"#fff", "border_bottom_color":"", "border_bottom_width":"0" } }, { "name":"头部广告图", "blocktype":"ad_picture", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"广告", "blocktype":"ad", "settings":{ "is_show":true, "number":5, "show_type":"scroll" } }, { "name":"菜单", "blocktype":"menu", "settings":{ "is_show":true, "bg_color":"#fff", "color":"#1eb7a4" } }, { "name":"个人中心", "blocktype":"personal_center", "settings":{ "is_show":true, "bg_color":"#fff", "color":"#1eb7a4" } }, { "name":"上网按钮", "blocktype":"online_button", "settings":{ "is_show":true, "offline_bg_url":"", "online_bg_url":"" } } ] }, { "name" : "登录页", "blocks":[ { "name":"页面背景", "blocktype":"page_bg", "settings":{ "is_show":true, "bg_url":"", "bg_color":"" } }, { "name":"logo图", "blocktype":"logo", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"登录模块", "blocktype":"login", "settings":{ "is_show":true, "success_url":"" } } ] }, { "name" : "认证过程页", "duration":"5", "blocks":[ { "name":"页面背景", "blocktype":"page_bg", "settings":{ "is_show":false, "bg_url":"" } }, { "name":"登录动画", "blocktype":"login_animate", "settings":{ "is_show":true, "bg_url":"" } } ] }, { "name" : "登录成功页", "blocks":[ { "name":"头部广告图", "blocktype":"ad_picture", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"成功页app", "blocktype":"apps", "settings":{ "is_show":true } }, { "name":"成功页提示信息", "blocktype":"success_tips", "settings":{ "is_show":false, "color":"#fff", "content":"" } } ] }, { "name" : "广告细览页", "blocks":[ { "name":"头部标题栏", "blocktype":"title_bar", "settings":{ "is_show":true, "bg_color":"#1eb7a4", "content_switch":true, "content":"", "bg_url":"", "color":"#fff", "border_bottom_color":"", "border_bottom_width":"0" } } ] } ] }'<span>;

</span><span>$json2</span>='{ "filedir":"default", "pages" : [ { "name" : "首页", "blocks":[ { "name":"头部标题栏", "blocktype":"title_bar", "settings":{ "is_show":true, "bg_color":"#1eb7a4", "content_switch":true, "content":"", "bg_url":"", "color":"#fff", "border_bottom_color":"", "border_bottom_width":"0" } }, { "name":"头部广告图", "blocktype":"ad_picture", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"广告", "blocktype":"ad", "settings":{ "is_show":true, "number":5, "show_type":"scroll" } }, { "name":"菜单", "blocktype":"menu", "settings":{ "is_show":true, "bg_color":"#fff", "color":"#1eb7a4" } }, { "name":"个人中心", "blocktype":"personal_center", "settings":{ "is_show":true, "bg_color":"#fff", "color":"#1eb7a4" } }, { "name":"上网按钮", "blocktype":"online_button", "settings":{ "is_show":true, "offline_bg_url":"", "online_bg_url":"" } } ] }, { "name" : "登录页", "blocks":[ { "name":"页面背景", "blocktype":"page_bg", "settings":{ "is_show":true, "bg_url":"", "bg_color":"" } }, { "name":"logo图", "blocktype":"logo", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"登录模块", "blocktype":"login", "settings":{ "is_show":true, "success_url":"" } } ] }, { "name" : "认证过程页", "duration":"5", "blocks":[ { "name":"页面背景", "blocktype":"page_bg", "settings":{ "is_show":false, "bg_url":"" } }, { "name":"登录动画", "blocktype":"login_animate", "settings":{ "is_show":true, "bg_url":"" } } ] }, { "name" : "登录成功页", "blocks":[ { "name":"头部广告图", "blocktype":"ad_picture", "settings":{ "is_show":true, "bg_url":"" } }, { "name":"成功页app", "blocktype":"apps", "settings":{ "is_show":true } }, { "name":"成功页提示信息", "blocktype":"success_tips", "settings":{ "is_show":false, "color":"#fff", "content":"" } } ] }, { "name" : "广告细览页", "blocks":[ { "name":"头部标题栏", "blocktype":"title_bar", "settings":{ "is_show":true, "bg_color":"#1eb7a4", "content_switch":true, "content":"", "bg_url":"", "color":"#fff", "border_bottom_color":"", "border_bottom_width":"0" } } ] } ] }'<span>;

</span><span>$array1</span>=json_decode(<span>$json1</span>,<span>true</span><span>);
</span><span>$array2</span>=json_decode(<span>$json2</span>,<span>true</span><span>);


</span><span>function</span> array_recursive_diff(<span>$array1</span>, <span>$array2</span><span>) {
    </span><span>$result</span> = <span>array</span><span>();
    </span><span>foreach</span> (<span>$array1</span><span>as</span><span>$key1</span> => <span>$value1</span><span>) {
        </span><span>if</span> (<span>array_key_exists</span>(<span>$key1</span>, <span>$array2</span><span>)) {
            </span><span>if</span> (<span>is_array</span>(<span>$value1</span><span>)) {
                </span><span>$diff</span> = array_recursive_diff(<span>$value1</span>, <span>$array2</span>[<span>$key1</span><span>]);
                </span><span>if</span> (<span>count</span>(<span>$diff</span><span>)) {
                    </span><span>$result</span>[<span>$key1</span>] = <span>$diff</span><span>;
                }
            } </span><span>else</span><span> {
                </span><span>if</span> (<span>$value1</span> != <span>$array2</span>[<span>$key1</span><span>]) {
                    </span><span>$result</span>[<span>$key1</span>] = <span>$value1</span><span>;
                }
            }
        } </span><span>else</span><span> {
            </span><span>$result</span>[<span>$key1</span>] = <span>$value1</span><span>;
        }
    }

    </span><span>return</span><span>$result</span><span>;
}

</span><span>$result</span>=array_recursive_diff(<span>$array1</span>, <span>$array2</span><span>);
</span><span>echo</span> '<pre class="brush:php;toolbar:false">'<span>;
</span><span>var_dump</span>(<span>$result</span><span>);

</span><span>if</span>(<span>empty</span>(<span>$result</span><span>)){
    </span><span>echo</span> '完全相同'<span>;
}</span><span>else</span><span>{
    </span><span>echo</span> '完全不相同'<span>;
}</span>
Copy after login

The above introduces the precautions for the array_diff function, including the relevant aspects. I hope it will be helpful to friends who are interested in PHP tutorials.

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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Detailed tutorial on using Network Settings to set static IP in Linux (KDE) Detailed tutorial on using Network Settings to set static IP in Linux (KDE) Feb 29, 2024 am 10:20 AM

Open KDE's settings panel First, open KDE's settings panel. You can click the settings icon on the desktop, or search for "Settings" in the start menu and open it. Click the "Network" option in the settings panel. Next, you will see a "NetworkConnections" window. In this window, you need to click the "Add" button to add a new network connection. In the CreateNewConnection dialog box, select Manual&rdquo

Detailed explanation of the meaning of true in PHP functions Detailed explanation of the meaning of true in PHP functions Mar 16, 2024 am 08:57 AM

Detailed explanation of the meaning of true in PHP function In PHP, true is a Boolean value, representing the state of &quot;true&quot; or &quot;yes&quot;. Using true in a function is usually used to express that a condition is true or to return a success status. This article will explain in detail the meaning of true in PHP functions from different perspectives, and give specific code examples. 1. Conditional judgment when true is returned: In PHP functions, true is usually used in conditional judgment to indicate that the condition is true. For example: functioni

What does true mean in PHP function? What does true mean in PHP function? Mar 16, 2024 pm 12:12 PM

Title: What does true mean in PHP functions? In PHP programming, true represents true in a Boolean value, usually indicating the state of &quot;true&quot;. When true is used in a function, it is usually used to determine whether a condition is true or to perform some operation. The following will use specific code examples to illustrate what true means in PHP functions. example:

What should I do if php cannot get the name? What should I do if php cannot get the name? Nov 24, 2022 am 09:56 AM

PHP cannot get the name because when the name and id values ​​of the form element are different, the browser cannot recognize it. The solution: 1. Check whether some form elements and frame elements use name; 2. Check only Elements that can be assigned ID but not name; 3. For multi-select box checkbox, you can use "join(',', $__POST['name'])" to form data.

How to add name to setup in Vue3 How to add name to setup in Vue3 May 13, 2023 am 09:40 AM

What is the use of name in Vue3? 1. Name needs to be defined when making recursive components. 2. The component can be cached with keep-aliveincludeexclude. 3. When Vue reports an error or is debugging, you can see the name of the component. Vue3 defines name1. It is automatically generated as long as the setup syntax sugar mode single file component is turned on in the script. The corresponding name option will be automatically generated based on the file name. For example, Tree.vue, then its name will be automatically generated by Tree. This has a drawback. If you want to modify the name, you need to modify the component name. If there is a place to import the component, you need to modify it together. 2. Open a script to define name

The difference and usage of equals() and == in Java The difference and usage of equals() and == in Java Mar 07, 2024 pm 03:28 PM

In Java development, there is a seemingly simple, but there are a lot of topics and questions on the Internet, that is, what is the difference between equals() and the == operator ==: The operator is used to compare whether the addresses of two objects are equal equals( ): method is used to compare whether the contents of two objects are equal. Today's content introduction, which takes about 9 minutes. To better understand this difference, let us look at an example: Stringstr1=newString("Hello");Stringstr2=newString(" Hello");System.out.println(str1.equals(str2));//output trueSystem

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 Jun 13, 2016 am 10:15 AM

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

See all articles