为什么我在编码后得到不同的数组?

Why I get different array after encoding?

我想为此将数组编码为字符串我使用了两个函数:

function HashArray($data = array()){
    $key = md5('hash');
    $cipher = "rijndael-256";
    $mode = "cbc";
    $data = serialize($data);
    return m_encrypt($data, $key, $cipher, $mode);
}

function UnHashArray($data = array()){
    $key = md5('hash');
    $cipher = "rijndael-256";
    $mode = "cbc";
    return m_decrypt($data, $key, $cipher, $mode);
}

调用散列函数:

<? $string = HashArray(array('id' => $article->idArticle, 'typeLike' => '1', 'content' => 2, 'contentTypeSub' => 0));?>

在 AJAX 将 $string 发送到服务器后,在服务器 PHP 上我得到哈希字符串:

$array = UnHashArray($this->input->post('data'));
var_dump($array); die();

它给了我字符串:

string(96) "a:4:{s:2:"id";N;s:8:"typeLike";s:1:"1";s:7:"content";i:2;s:14:"contentTypeSub";i:0;}"

我做错了什么?

在你的HashArray方法上你有

$data = serialize($data);

你的UnHashArray方法

中缺少这样的东西
$data = unserialize($data);