什么会导致字段在PHP中返回数组?

时间:2010-01-03 22:08:06

标签: php

我正在修改现有的购物车应用程序,所以我正在摸索这个。使用PHP 5和mySql。

代码向客户端和用户发送电子邮件消息,显示他们感兴趣的产品。页面正确呈现产品和属性。发送电子邮件时,产品部分可以正常工作,但属性不起作用。

它应该显示属性,但它只有“Array”一词。

电子邮件部分发送:

产品名称:(无论产品是什么)

属性:数组

产品选项名称:(无论什么产品选项)

此代码用于在电子邮件中生成产品信息:

$message .= '<p style="font:bold 14px/25px Verdana, Arial, Helvetica, sans-serif;
margin:0; padding:0;"><strong>List of Products</strong></p><br /><br />' . "\n";
if (is_array($arr_product_list)){
        foreach($arr_product_list as $value) {
            $message .= '<strong>' . $value . '</strong><br />' . "\n";
        }
}

这是用于在呈现的页面上显示产品的代码:

$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[] .=
"---------------------------------------------------------------";

以下是在呈现的页面上显示的内容,他们应该选择产品和属性:

<div class="wrapperAttribsOptions">
  <h4 class="optionName back"><label class="attribsSelect" for="attrib-14">SPK
  Model</label></h4>
<div class="back">
  <select name="id[14]" id="attrib-14">
   <option value="43">SPK-4</option>
</select>
</div>

我想我真的很困惑的是我没有看到在发送电子邮件的代码中有什么叫做attrib-14或id14,所以我在解决这个问题时遇到了问题。

任何帮助都将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:2)

通过在表单名称中使用xyz[],您将PHP中生成的xyz变量转换为数组。它从表单中获取所有xyz值并创建它们的数组。

你必须在php中解析数组,例如使用

 foreach($attributes as $field)
  $arr_product_list[] = "$field<br />";

或为您的字段使用其他表示法:

<select name="id_14" id="attrib-14">

但是,这样你就必须处理POST输入中有很多id_*个字段。

答案 1 :(得分:0)

似乎产品将它们的属性存储为数组,这是有道理的,因为可能有很多。

尝试更改此行:

$arr_product_list[] .= "<strong>Attributes:</strong> $attributes <br />";

$arr_product_list[] .= "<strong>Attributes:</strong>".join(', ', $attributes)."<br />";