我继承了zencart mod并且无法弄清楚出了什么问题。客户选择产品和属性(型号#)。然后将其发送到他们完成的另一个表单。提交表单时,产品和属性应包含在发送的电子邮件中。
此时,只有产品才会通过。该属性只是说“数组”。有趣的是,当我删除打印属性的行时,products_options_names将打印出来。所以我知道产品和products_options_names都在工作。该属性是唯一不能正常工作的东西。
以下是我认为重要的代码。这是具有表单的页面,因此该属性应该已经传递给表单。
//Begin Adding of New features
//$productsimage = $product['productsImage'];
$productsname = $product['productsName'];
$attributes = $product['attributes'];
$products_options_name = $value['products_options_name'];
$arr_product_list[] = "<strong>Product Name:</strong> $productsname <br />";
$arr_product_list[] .= "<strong>Attributes:</strong> $attributes <br />";
$arr_product_list[] .= "<strong>Products Options Name:</strong> $products_options_name <br />";
$arr_product_list[] .= "---------------------------------------------------------------";
//End Adding of New features
} // end foreach ($productArray as $product)
?>
在此之上,还有另一个具有属性的部分:
<?php
echo $product['attributeHiddenField'];
if (isset($product['attributes']) && is_array($product['attributes'])) {
echo '<div class="cartAttribsList">';
echo '<ul>';
reset($product['attributes']);
foreach ($product['attributes'] as $option => $value) {
?>
任何人都可以帮我弄清楚出了什么问题吗?我不确定此页面上是否存在问题,或者该属性是否未传递到此页面。
TIA
答案 0 :(得分:1)
您的第一个代码段包含潜在问题。您正在尝试使用字符串连接$arr_product_list
运算符,同时向数组.=
添加新项。当然,这会让PHP感到困惑,因为您正在尝试添加一个尚不存在的字符串。
我相信您的代码的目的是构建一个HTML代码段,然后将其添加到数组中,您可以使用以下代码:
$str = "<strong>Product Name:</strong> $productsname <br />";
$str .= "<strong>Attributes:</strong> $attributes <br />";
$str .= "<strong>Products Options Name:</strong> $products_options_name <br />";
$str .= "---------------------------------------------------------------";
$arr_product_list[] = $str;
你很可能从PHP那里得到错误,但也许他们被压制了。仔细检查您的php.ini
,确保您的error_reporting
,display_errors
,display_startup_errors
和log_errors
设置正确无误。
答案 1 :(得分:0)
我意识到这可能为时已晚,无法帮助解决这一特定问题,但我正在回答,希望其他人在这篇文章中遇到类似问题。
您看到“阵列”打印出来的原因是因为存储在$ products中且带有键'attributes'的值实际上是一个数组。 $ product ['attributes']中的值是一个数组类型,您将其存储到$ attributes中。这意味着$ attributes变量是一个数组,所以当你尝试将它连接到这一行时:
$arr_product_list[] .= "<strong>Attributes:</strong> $attributes <br />";
解释器不知道如何序列化Array对象,因此默认打印出对象的类型,我们已经确定它是一个数组。
如果您关心的$ attributes数组中只有一个值,您可能希望在构建字符串之前收集该值,如下所示:
var $attributes = $products['attributes'];
var $attributeValue = $attributes['my_target_value_key'];
**(其中'my_target_value_key'是您希望提取的值的关键字)*
然后你可以像以前一样尝试它,只需用$ attributeValue替换字符串中的$ attributes。
第二个代码块有效,因为您可以看到它检查值是否已设置且是否为此行的数组类型:
if (isset($product['attributes']) && is_array($product['attributes'])) {
然后使用以下行循环遍历返回数组中的每个项目:
foreach ($product['attributes'] as $option => $value) {