![](/img/trans.png)
[英]how to remove the duplicates within an array of arrays based on the array key in php?
[英]How to remove array item based on key name in PHP?
我想循環使用foreach數組來檢查是否存在密鑰名稱。 如果具有該名稱的密鑰確實存在,我想刪除包含它的數組項。
我編寫了以下代碼,在第一個條件中檢查數組項的值,如果數組項的值等於空字符串“” ,則將該數組項的值設置為“ - ” (短划線字符)。 第一個條件運作良好。
foreach ($domaindata['administrative'] as $key => $value) {
if ($value == "") {
$value = "-";
}
else if ($key == "type") {
unset ($domaindata[$key]);
}
echo "<b>$key: </b>$value<br>";
}
現在我添加了第二個條件,它檢查$ key name是否存在,如果存在則刪除該數組項。
這是其他部分,但該數組項仍然輸出。
else if ($key == "type") {
unset ($domaindata[$key]);
}
數組結構如下:
Array
(
[name] => OWNER NAME
[address] => OWNER ADDRESS
[post:number] => OWNER POST OFFICE NUMBER
[city] => OWNER CITY
[country] => OWNER COUNTRY CODE
[telephone] => OWNER TELEPHONE NUMBER
[fax] => OWNER FAX NUMBER // could be empty
[email] => OWNER EMAIL ADDRESS
[type] => person
[user:type] => Fizička osoba
)
你正在對$domaindata['administrative']
做一個foreach
,而不是$domaindata
。 所以要解開你需要做的事情
unset($domaindata['administrative'][$key]);
至於為什么你的循環仍然顯示type
,因為unset不會影響循環(你已經復制了循環變量)。 我建議你在foreach
循環之前做這個
if(isset($domaindata['administrative']['type'])) unset($domaindata['administrative']['type']);
然后,您可以完全刪除elseif
塊(這將刪除一些開銷)
您正在迭代$domaindata['administrative']
,而不是$domaindata
。 因此,您還應該從中unset
元素:
else if ($key == "type") {
unset ($domaindata['administrative'][$key]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.