Home >Backend Development >PHP Tutorial >Notes on array_diff function

Notes on array_diff function

WBOY
WBOYOriginal
2016-07-29 09:10:29942browse

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>

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:
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
Previous article:The journey of harvestingNext article:The journey of harvesting