[英]Removing a value from a cookie array
我正在嘗試從Cookie數組中刪除一個值:-
if (!empty($_GET['job_unfav'])) {
$value_to_delete = $_GET['job_fav']; // Cookie value to delete from array
$favouriteIDs = explode('|', $_COOKIE['job_fav']);
var_dump($favouriteIDs);
unset($favouriteIDs[$value_to_delete]);
$favouriteIDs = array_values($favouriteIDs);
setcookie('job_fav', implode('|', $favouriteIDs));
}
$favouriteIDs
返回:-
array(90) {
[0]=> string(3) "542"
[1]=> string(0) ""
[2]=> string(3) "538"
[3]=> string(0) ""
[4]=> string(3) "534"
[5]=> string(0) ""
[6]=> string(3) "524"
[7]=> string(0) ""
[8]=> string(3) "516"
[9]=> string(9) "undefined"
[10]=> string(9) "undefined"
[11]=> string(9) "undefined"
[12]=> string(3) "468"
[13]=> string(0) ""
[14]=> string(0) ""
[15]=> string(0) "" [16]=> string(0) "" [17]=> string(0) "" [18]=> string(0) "" [19]=> string(0) "" [20]=> string(0) "" [21]=> string(0) "" [22]=> string(3) "468" [23]=> string(0) "" [24]=> string(3) "235" [25]=> string(3) "231" [26]=> string(0) "" [27]=> string(0) "" [28]=> string(0) "" [29]=> string(3) "235" [30]=> string(3) "231" [31]=> string(3) "228" [32]=> string(0) "" [33]=> string(0) "" [34]=> string(0) "" [35]=> string(0) "" [36]=> string(3) "235" [37]=> string(3) "231" [38]=> string(0) "" [39]=> string(0) "" [40]=> string(0) "" [41]=> string(3) "231" [42]=> string(3) "228" [43]=> string(3) "225" [44]=> string(0) "" [45]=> string(0) "" [46]=> string(0) "" [47]=> string(0) "" [48]=> string(3) "235" [49]=> string(0) "" [50]=> string(0) "" [51]=> string(0) "" [52]=> string(0) "" [53]=> string(0) "" [54]=> string(0) "" [55]=> string(3) "235" [56]=> string(3) "235" [57]=> string(0) "" [58]=> string(3) "235" [59]=> string(0) "" [60]=> string(0) "" [61]=> string(3) "235" [62]=> string(0) "" [63]=> string(0) "" [64]=> string(0) "" [65]=> string(9) "undefined" [66]=> string(0) "" [67]=> string(9) "undefined" [68]=> string(0) "" [69]=> string(3) "502" [70]=> string(0) "" [71]=> string(0) "" [72]=> string(0) "" [73]=> string(0) "" [74]=> string(0) "" [75]=> string(0) "" [76]=> string(0) "" [77]=> string(0) "" [78]=> string(0) "" [79]=> string(0) "" [80]=> string(0) "" [81]=> string(0) "" [82]=> string(0) "" [83]=> string(0) "" [84]=> string(0) "" [85]=> string(0) "" [86]=> string(0) "" [87]=> string(0) "" [88]=> string(0) "" [89]=> string(3) "514" }
目前這還沒有刪除任何內容,您知道如何執行此操作嗎?
即我想從job_fav
cookie中刪除所有出現的“ 542”,但保留所有其他值
這是使用array_search()
函數的簡單方法。
<?php
$favoriteIds = array("542", "","538", "", "534", "", "524" );
$value_to_delete = '542'; //$_GET['job_fav']
$idx = array_search($value_to_delete, $favoriteIds);
if ( $idx !== FALSE ) {
//if the value was found
unset($favoriteIds[$idx]);
}
print_r($favoriteIds);
結果將是
Array
(
[1] =>
[2] => 538
[3] =>
[4] => 534
[5] =>
[6] => 524
)
在代碼中,從數組中正確刪除所需的值。
但是,為了覆蓋您已經擁有的cookie(因此通過交換cookie實際上刪除了您刪除的值),您需要向您進行的setcookie php函數調用添加更多參數:
從文檔 :
bool setcookie(字符串$ name [,字符串$ value [,整數$ expire = 0 [,字符串$ 路徑 [,字符串$ domain [,布爾$ secure =假[,布爾$ httponly =假]]]]]]]))
確保參數:
路徑
域
等於您已經擁有的cookie,否則您將創建另一個cookie,否則setcookie將被忽略。
然后必須使用當前時間戳設置expire字段( 如果cookie沒有過期則可以保留為0 ),您可以使用time()函數加上希望cookie處於活動狀態的秒數:
$ expire = time()+ NUMBER_OF_SECONDS
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.