php - base64 编码数据在 json_encode 后丢失

php - base64 encoded data is lost after json_encode

我使用以下代码为给定字符串生成加密字符串。

class MY_class{
    public static function cryption($string){
        $output = base64_encode(openssl_encrypt($string, $cipher_method, $key, 0, $iv));
        $output = $iv . $output;
        return $output;
    }
}

使用这段代码,我生成了模型对象 id 的加密 id 并替换了原始 id。

$Model_object = Model_class::find(1);
$Model_object->id = MY_class::cryption($Model_object->id);
echo json_encode($Model_object);

对于 $Model_object 的给定实例 print_r() 在用加密的 id 替换原始 id 后得到以下结果。

[index] => Array
    (
        [id] => 4df73f34cUYxVmVLWlFUU2M9
    )

但是json_encode()只输出加密id的前十进制数字。

{"id":4}

如果有人能解释为什么会发生这种情况以及如何解决这个问题,我将不胜感激。

P.S。我已经用谷歌搜索了这个问题并在 Stack Overflow 中也进行了搜索。所以,请不要在评论中提及它。

正如@LSerni 所说,我隐式地将 string 的加密 ID 分配给 integer 属性 $Model_object->id.

所以我创建了一个新的动态 属性 $Model_object->encrypted_id 并为其分配了加密的 ID,并在另一端调用了 属性。它就像一个魅力。

非常感谢@LSerni 对问题的见解。