<code>/**</code>
<code> </code><code>* 以第一個參數為主進行進行比較</code>
<code> </code><code>* **/</code>
<code>function</code> <code>diffArray(</code><code>$arr1</code> <code>, </code><code>$arr2</code> <code>){</code>
<code> </code><code>$arrRet</code> <code>= </code><code>array</code><code>();</code>
<code> </code><code>#針對關聯數組</code>
<code> </code><code>if</code><code>(is_assoc(</code><code>$arr1</code><code>) && is_assoc(</code><code>$arr2</code><code>) ){</code>
<code> </code><code>if</code> <code>(</code><code>empty</code><code>(</code><code>$arr1</code><code>)) {</code>
<code> </code><code>$arr1</code> <code>= </code><code>array</code><code>();</code>
<code> </code><code>}</code>
<code> </code><code>if</code> <code>(</code><code>empty</code><code>(</code><code>$arr2</code><code>)) {</code>
<code> </code><code>$arr2</code> <code>= </code><code>array</code><code>();</code>
<code> </code>
<code> </code><code>foreach</code> <code>(</code><code>$arr1</code> <code>as</code> <code>$key</code> <code>=> </code><code>$value</code><code>){</code>
<code> </code><code>if</code><code>(!in_array(</code><code>$key</code><code>, </code><code>array_keys</code><code>(</code><code>$arr2</code><code>))){</code>
<code> </code><code>if</code><code>(!</code><code>array_key_exists</code><code>(</code><code>$key</code><code>, </code><code>$arrRet</code><code>)){</code>
<code> </code><code>array_push</code><code>(</code><code>$arrRet</code><code>, </code><code>$key</code><code>);</code>
<code> </code><code>}</code>
<code> </code><code>continue</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>if</code><code>(</code><code>$arr1</code><code>[</code><code>$key</code><code>] !== </code><code>$arr2</code><code>[</code><code>$key</code><code>]){</code>
<code> </code><code>#針對元素為數組的情況</code>
<code> </code><code>if</code><code>(</code><code>is_array</code><code>(</code><code>$value</code><code>)){</code>
<code> </code><code>array_merge</code><code>(</code><code>$arrRet</code><code>,diffArray(</code><code>$value</code><code>,</code><code>$arr2</code><code>[</code><code>$key</code><code>]));</code>
<code> </code><code>}</code><code>elseif</code><code>(is_assoc(</code><code>$arr1</code><code>)===false && is_assoc(</code><code>$arr2</code><code>)===false) {#針對索引數組</code>
<code> </code><code>$arrRet</code> <code>= </code><code>array_merge</code><code>(</code><code>array_diff</code><code>(</code><code>$arr1</code><code>, </code><code>$arr2</code><code>),</code><code>array_diff</code><code>(</code><code>$arr2</code><code>, </code><code>$arr1</code><code>));</code>
<code> </code><code>}</code><code>else</code> <code>{</code>
<code> </code><code>new</code> <code>Exception(</code><code>"數組類型不一緻!"</code><code>);</code>
<code> </code><code>}</code>
<code> </code><code>return</code> <code>$arrRet</code><code>;</code>
<code>}</code>
<code> </code><code>* 判斷是否為關聯數組</code>
<code>function</code> <code>is_assoc(</code><code>$arr</code><code>) { </code>
<code> </code><code>if</code><code>(!</code><code>is_array</code><code>(</code><code>$arr</code><code>)) </code><code>return</code> <code>-1;</code>
<code> </code><code>return</code> <code>!(</code><code>array_values</code><code>(</code><code>$arr</code><code>) === </code><code>$arr</code><code>);</code>
<code>} </code>
<code>$arr1</code> <code>= </code><code>array</code><code>(</code>
<code> </code><code>//"channelNameShort"=> "百度時代公司",</code>
<code> </code><code>//"channelName"=>"百度時代責任有限公司",</code>
<code> </code><code>"rawUrl"</code><code>=></code><code>"http://www.baidu.com"</code><code>,</code>
<code> </code><code>"logoUrl"</code><code>=> </code><code>"http://t11.baidu.com/it/u=3114404026,3614407463&fm=58"</code><code>,</code>
<code> </code><code>"channelType"</code><code>=> </code><code>array</code><code>(</code>
<code> </code><code>"210010004"</code><code>,</code>
<code> </code><code>"210010007"</code><code>,</code>
<code> </code><code>),</code>
<code> </code><code>"mobileURL"</code> <code>=> </code><code>"http://www.bb.com"</code><code>,</code>
<code> </code><code>"rockArray"</code> <code>=> </code><code>array</code><code>(</code>
<code> </code><code>"A"</code> <code>=> 1,</code>
<code> </code><code>"B"</code> <code>=> </code><code>array</code><code>(1,2,3),</code>
<code> </code><code>//"null" => array(),</code>
<code>);</code>
<code>$arr2</code> <code>= </code><code>array</code><code>(</code>
<code> </code><code>//"channelName"=>"百度線上公司",</code>
<code> </code><code>"mobileURL"</code> <code>=> </code><code>""</code><code>,</code>
<code> </code><code>"B"</code> <code>=> 2,</code>
<code> </code><code>"210010017"</code><code>,</code>
<code> </code><code>"null"</code> <code>=> </code><code>array</code><code>(),</code>
<code>/*$arr3 = array(</code>
<code> </code><code>1,2,3,4</code>
<code>var_dump(is_assoc($arr1))*/</code>
<code>/*$arr1 = array(1,3,5,7,9);</code>
<code>$arr2 = array(1,2,5,6,9);*/</code>
<code>var_dump(diffArray(</code><code>$arr1</code><code>, </code><code>$arr2</code><code>));</code>
<code>var_dump(</code><code>array_unique</code><code>(</code><code>array_merge</code><code>(diffArray(</code><code>$arr1</code><code>, </code><code>$arr2</code><code>),diffArray(</code><code>$arr2</code><code>, </code><code>$arr1</code><code>))));</code>
版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任
本文轉自 夢朝思夕 51CTO部落格,原文連結:http://blog.51cto.com/qiangmzsx/1553325