我一直在努力應對現在應該是一個非常簡單的問題,並且無法找到答案。使用array_diff_assoc()或獲得多維數組的差異
我有兩個陣列和這些陣列包含有關ID,LinkLabel的和url的格式如下信息:
$pageids
--------
Array (
[0] => Array
([id] => 1
[linklabel] => Home
[url] => home)
[1] => Array
([id] => 2
[linklabel] => Graphic Design
[url] => graphicdesign)
[2] => Array
([id] => 3
[linklabel] => Other Design
[url] => otherdesign)
[3] => Array
([id] => 6
[linklabel] => Logo Design
[url] => logodesign)
[4] => Array
([id] => 15
[linklabel] => Content Writing
[url] => contentwriting)
)
$parentpage
-----------
Array (
[0] => Array
([id] => 2
[linklabel] => Graphic Design
[url] => graphicdesign)
[1] => Array
([id] => 3
[linklabel] => Other Design
[url] => otherdesign))
現在我想這兩個爲了比較發現,在$pageids
信息但不在$parentpage
- 這將構成另一個名爲$pageWithNoChildren
的數組。然而,當我使用以下代碼:
$pageWithNoChildren = array_diff_assoc($pageids,$parentpage);
在陣列上的所述第一電平的array_diff_assoc()
運行,並因此認爲,這兩個$pageids
和$parentpages
具有[0]和[1]鍵,因此忽略它們並返回所有從[2]開始的$pageids
的信息。不過,我希望它查看嵌套數組的內容並比較這些內容我需要它看到哪個id,linklabel和url在$pageids
而不在$parentpages
並返回這些值。
如何讓array_diff_assoc()
在嵌套數組的鍵上運行,而不是第一個數組的鍵,因此最終結果是一個包含[0],[3]和[4]內容的數組]數組從$pageids
?
這太棒了!謝謝!順便說一句,我不認爲你可以對此做出快速解釋嗎?我之前沒有使用過反序列化或array_maps,現在我正在查找它們,但是如果你能快速運行,那將是驚人的,不管怎樣,再次感謝! – Smokescreen
我想我可能已經找到了答案,所以其他人閱讀這個和誰是好奇我相信serialize()將PHP鍵和值轉換爲一個字符串,所以你有所有的$ pageids數組中的字符串和所有的字符串$ parentpages的數組。然後,array_diff函數可以比較這些字符串,並挑出那些在$ pageids中而不在$ parentpages中的字符串,然後使用unserialize()將結果轉換回php vales。正是我需要的!再次感謝!:) – Smokescreen
謝謝!我剛剛一步一步地閱讀了你的文檔,還發現了一些文檔,你所說的幾乎是我從閱讀中理解的東西,所以它看起來像我已經知道了:)再次感謝,這真是太棒了! – Smokescreen