iT邦幫忙

0

PHP排列問題

php
<?php require_once "../../connctions/connect.php";  ?>
<?php include "cookie_timely.php" ?>
<?php session_start() ?>
<?php
    if(isset($_SESSION['member_id'])){
        /*$sql_track = "SELECT `track_room_id` FROM `member_track` WHERE `member_id` = '{$_SESSION['member_id']}' ";
        $result_track = mysqli_query($link,$sql_track);
        $row_track = mysqli_fetch_assoc($result_track);*/
        
        if(!isset($_COOKIE['track']) ){
            echo "tracking";

            $sql_record_track = "INSERT INTO `member_track`(`member_id`,`track_room_id`) VALUE ('{$_SESSION['member_id']}','{$_POST['track']}') ";
            $result_record_track = mysqli_query($link,$sql_record_track);
            $count = count($_COOKIE['track']);
            cookie2('track['.$count.']',$_POST['track'],time()+3600,'/');
        }
        else if(!in_array($_POST['track'],$_COOKIE['track'])){   //比對cookie陣列,是否已經加入追蹤  
            echo "tracking";

            $sql_record_track = "INSERT INTO `member_track`(`member_id`,`track_room_id`) VALUE ('{$_SESSION['member_id']}','{$_POST['track']}') ";
            $result_record_track = mysqli_query($link,$sql_record_track);

            $count = count($_COOKIE['track']);

            cookie2('track['.$count.']',$_POST['track'],time()+3600,'/');     
        }else{

            $sql_delete_track = "DELETE FROM `member_track` WHERE `track_room_id` = '{$_POST['track']}' and `member_id` = '{$_SESSION['member_id']}' ";
            $result_delete_track = mysqli_query($link,$sql_delete_track);

            $key = array_search($_POST['track'],$_COOKIE['track']);

            cookie2('track['.$key.']','',time()-3600,'/');

            $_COOKIE['track']=array_values($_COOKIE['track']);
                
            echo "delete_track";
        }
    }else{
        echo "no_login";
    }
    header("Access-Control-Allow-Credentials:true");   //ajax傳送cookie方法
?>

我做了一個Ajax新增追蹤系統,但是在重新排列$_COOKIE['track']=array_values($_COOKIE['track']);
他並不會執行,應該如何解決呢?

Han iT邦研究生 1 級 ‧ 2019-08-19 09:41:44 檢舉
怎樣重新排列?? array_values是取陣列所有值哦0.0
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
舜~
iT邦高手 1 級 ‧ 2019-08-19 09:43:15

1.array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。
參考
使用這個方法 $_COOKIE['track'] 結構會改變,確定要這麼用?
建議用 ksort/asort/arsort 見第二點

2.在array_values前先排序或用sort替代

由小到大排序值(Value)sort (鍵值消失)
由小到大排序鍵值(Key) ksort
排序值小到大但要保留鍵值 asort
排序值大到小但要保留鍵值 arsort
自訂排序 usort
參考:[PHP] 陣列排序 sort, ksort, asort, usort...

看更多先前的回應...收起先前的回應...
豬豬人 iT邦新手 4 級 ‧ 2019-08-19 09:57:06 檢舉

我是想要當陣列友直被刪除,陣列的key值從0開始
例如原本key值是0,1,2,3,4
當key1的值被刪除
新key值要是
0,1,2,3

舜~ iT邦高手 1 級 ‧ 2019-08-19 11:31:36 檢舉

若要即時刪除的話,可以用unset
參考:https://dotblogs.com.tw/jhsiao/2015/05/16/151311

舜~ iT邦高手 1 級 ‧ 2019-08-19 11:36:46 檢舉

cookie2('track['.$key.']','',time()-3600,'/');
這行設定了cookie的生命週期時間,但也只是編輯時間,並不會在後端刪除,會在前端的瀏覽器中進行刪除過期的cookie

豬豬人 iT邦新手 4 級 ‧ 2019-08-19 12:02:38 檢舉

所以我後端執行cookie2('track['.$key.']','',time()-3600,'/');
時並沒有馬上刪除,是前端重新整理時才會刪除囉
那我$_COOKIE['track']=array_values($_COOKIE['track']);
也要放前端囉?
但我不知道要怎麼讓回傳後執行$_COOKIE['track']=array_values($_COOKIE['track']);
可以在js裡執行php嗎?

舜~ iT邦高手 1 級 ‧ 2019-08-19 12:33:58 檢舉

一樣放在後端,沒特殊需求也不用刻意砍他,清空內容並讓他失效(過期)就可以了
php删除/清除cookie的两种方法

0
小魚
iT邦大師 1 級 ‧ 2019-08-19 11:52:31

$_COOKIE本身不是陣列,
我不知道你到底想要做什麼 XD

看更多先前的回應...收起先前的回應...
dragonH iT邦超人 5 級 ‧ 2019-08-19 12:03:41 檢舉

其實 $cookie 算是 array

<?php
  setcookie('test1', 1, time()+3600*24);
  setcookie('test2', 2, time()+3600*24);
  setcookie('test3', 3, time()+3600*24);
  print_r ($_COOKIE);
  echo '<br>'.gettype($_COOKIE);
?>

result

Array ( [test1] => 1 [test2] => 2 [test3] => 3 ) 
array

參考

小魚 iT邦大師 1 級 ‧ 2019-08-19 12:04:55 檢舉

如果在C#應該稱為Dictionary...
其實PHP也有Array和Dictionary之分...

dragonH iT邦超人 5 級 ‧ 2019-08-19 12:12:26 檢舉

據我所知

php 應該沒有 Dictionary 喔

不過 php 的 array 可以達到類似的效果

參考

it can be treated as an array, list (vector), hash table (an implementation of a map), dictionary, collection, stack, queue, and probably more.

小魚 iT邦大師 1 級 ‧ 2019-08-19 13:03:17 檢舉

PHP也是有Dictionary的,
你可以new Array也可以new Dictionary,
如果是傳Json字串一個是[]一個是{}

dragonH iT邦超人 5 級 ‧ 2019-08-19 13:07:37 檢舉

真的假的

怎麼跟我知道的 php 不太一樣XD /images/emoticon/emoticon06.gif

有沒有 Dictionary 的範例可以參考 /images/emoticon/emoticon31.gif

小魚 iT邦大師 1 級 ‧ 2019-08-19 13:22:40 檢舉

也許PHP也會演進,
因為我之前用PHP寫API給別人接過,
其實只要Key不是從0開始的陣列就會自動轉成Dictionary...

0
Allenci
iT邦新手 5 級 ‧ 2019-08-20 18:03:34

我要發表回答

立即登入回答