Php 数组索引中的新行
在我们定制的旧版本opencart中,从购物车中移除某些物品时遇到问题。在我们的网站中,购物车作为如下数组存储在会话中:Php 数组索引中的新行,php,arrays,opencart,Php,Arrays,Opencart,在我们定制的旧版本opencart中,从购物车中移除某些物品时遇到问题。在我们的网站中,购物车作为如下数组存储在会话中: [product_id:options] => $quantity 问题似乎是部分选项数据包含新行,这意味着会话数据如下所示 Array ( [808: yyuu .3959: yyuu .3959] => 1 ) 当客户尝试删除产品时,会将密钥发送到服务器,但找不到阵列密钥 808: yyuu .3959: yyuu .3959 作为索引
[product_id:options] => $quantity
问题似乎是部分选项数据包含新行,这意味着会话数据如下所示
Array
(
[808: yyuu
.3959: yyuu
.3959] => 1
)
当客户尝试删除产品时,会将密钥发送到服务器,但找不到阵列密钥
808: yyuu
.3959: yyuu
.3959
作为索引
可以将新行字符用作数组索引吗?您可以选择将其更改为当前行为-选项不再以可读方式(数组)显示,而是编码为
Base64
,如下所示(system/library/cart.php::add()
,OC v.1.5.5.1):
然后,购物车中带有选项的产品密钥如下所示
123:SDFD/GHDS%RFW$ET35和TSF^WRT3@5YIWFHLDSFW/ETE4=
然后可通过以下代码从该密钥获得编码选项:
$product = explode(':', $key);
$product_id = $product[0];
// Options
if (isset($product[1])) {
$options = unserialize(base64_decode($product[1]));
} else {
$options = array();
}
这些更改可能必须通过系统库Cart
在更多地方实施
现在在数组中查找这些键应该不会有问题,因为它永远不会包含白色字符(
\n\r\t\s
)。这是什么版本的OC?它看起来真的很老。。。
$product = explode(':', $key);
$product_id = $product[0];
// Options
if (isset($product[1])) {
$options = unserialize(base64_decode($product[1]));
} else {
$options = array();
}