以上就是我在我的代码中尝试实现的目标。
* P =产品
以下是我的代码。我需要做的就是显示“ID'以及' qty'使用foreach.Now它只显示键' id'它的价值。
我试过
$_SESSION['items'][]=array('id'=>$id,'qty'=>$qty);
而不是
$_SESSION['items']=array('id'=>$id,'qty'=>$qty);
但我收到此错误:问题:Fatal error: [] operator not supported for string..
PHP
<?php
session_start();
?>
<?php
$id=$_GET['id'];
$qty=$_GET['qty'];
$_SESSION['items']=array('id'=>$id,'qty'=>$qty);
print_r($_SESSION['items']);
foreach($_SESSION['items'] as $items=>$value)
{
echo $items;
echo $value;
}
?>
编辑:
我设法解决了这个问题。但是现在,我试图在每个产品中加入以上内容。我的意思是,
我得到的数据是这样的:
$id = $_GET['id'];
$qty = $_GET['qty'];
$product_id=$_GET['product_id'];
//在会话
中存储详细信息$_SESSION['items'][]= array('id'=>$id,'qty'=>$qty,'product_id'=>$product_id);
print_r($_SESSION['items']);
$item_id= explode(',',$_SESSION['items']['id']);
$item_qty= explode(',',$_SESSION['items']['qty']);
$item_product= explode(',',$_SESSION['items']['product_id']);
//从数据库中检索信息
mysql_select_db($database_wedding_conn, $wedding_conn);
$select="SELECT tbl_additional_info.*,tbl_productscontents.* FROM
tbl_additional_info,tbl_productscontents WHERE tbl_additional_info.productid='$product_id AND tbl_additional_info.product_id=tbl_productscontents.product_id GROUP BY tbl_productscontents.productid'";
$result=mysql_query($select)or die(mysql_error());
这就是它在表格中的显示方式
<table>
<tr>
<th>Product</th>
<th>Size</th>
<th>Unit Price</th>
<th>Quantity</th>
<th>Amount</th>
</tr>
<?php
foreach($item_product as $p=>$p_value)
{
?>
<tr>
<td valign="top">
<?php
echo $p;
echo $p_value;
?>
</td>
<td>
<table>
<?php
foreach($item_id as $i)
{
?>
<tr>
<td>
<?php echo $i;?>
</td>
</tr>
<?php
}
?>
</table>
</td>
<td>
<?php
foreach($item_qty as $q)
{
//unit price
// echo $q;
}
?>
</td>
<td>
<table>
<?php
foreach($item_qty as $q)
{
?>
<tr>
<td>
<?php echo $q;?>
</td>
</tr>
<?php
}
?>
</table>
</td>
<td>
<?php
foreach($item_qty as $q)
{
//amount
//echo $q;
}
?>
</td>
</tr>
<?php
}
?>
</table>
问题:如何显示会话中存储的所有产品?每个循环只显示一个产品。它没有添加更多,因为它在print_r中显示($ _ SESSION [&#39; items&#39;])
答案 0 :(得分:1)
您正在使用的是一个关联数组,它只是一个维度。它是关联的,因为您可以通过关联访问它们,而不是通过索引号(即索引数组)访问它们,该关联是您给它的字符串值(即&#39; id&# 39;和数量&#39;)。
如果您正在尝试输出这些配置的值,则可以在没有foreach循环的情况下执行此操作:
echo $_SESSION['items']['id'];
echo $_SESSION['items']['qty'];
你在这里做的是说:
&#34;在关联数组$_SESSION
中,为我提供键items
的值,然后在其关联数组中为我提供键id
。重复相同但给我键qty
&#34;
修改强>
因此,如果您期望包含数组值的查询字符串,例如:
http://example.com?id[]=1&id[]=2&qty[]=10&qty[]=20
您可以使用for循环而不是foreach访问值:
<?php
$id=$_GET['id'];
$qty=$_GET['qty'];
for($i=0;$i < count($id) ; $i++){
echo "ID: " . $id[$i] . " has QTY: " . $qty[$i] . "<br />";
}
?>
这假设您始终具有与qty值相同数量的id值,但您可以添加逻辑来处理不均匀的分组。
答案 1 :(得分:1)
对于这种类型的分配
$_SESSION['items'][]=array('id'=>$id,'qty'=>$qty);
使用嵌套的foreach,
foreach($_SESSION['items'] as $items=>$values)
{
foreach($values as $item=>$value)
{
echo $item.": ";
echo $value."\n";
}
}
输出示例:
id: test_id
qty: test_qty
对于第二个问题,使用类似下面的foreach而不是explode它将为视图或数据库查询迭代提供干净的数组。
$item_product = array();
$item_id = array();
$item_qty = array();
foreach($_SESSION['items'] as $items=>$values)
{
foreach($values as $item=>$value)
{
if($item == 'id');
$item_id[] = $value;
else if($item == 'qty');
$item_qty[] = $value;
else if($item == 'product');
$item_product[] = $value;
}
}
答案 2 :(得分:1)
如果您想显示值多维数组,那么代码下面的代码是有用的 但是没有必要为每个循环Kalaivani。
如果你想显示来自数据库或多个记录的数据,那么foreach循环是有用的,参见下面的例子
<?php
$sql="write here your select query and pass record to $sql";//pass multiple value from database
**OR**
$sql= array('id'=>$id,'qty'=>$qty);//pass multiple value from array
session_name("items");
$id=$_GET['id'];
$qty=$_GET['qty'];
$_SESSION["items"]["id"]=$id;
$_SESSION["items"]["qty"]=$qty;
print_r($_SESSION["items"]);
?>
答案 3 :(得分:0)
这应该有效:
<?php
session_start();
//temp
$_GET['id'] = 7;
$_GET['qty'] = "test";
$id = $_GET['id'];
$qty = $_GET['qty'];
$_SESSION['items'] = array('id'=>$id,'qty'=>$qty);
foreach($_SESSION['items'] as $k => $v)
echo "Key: " . $k . " Value: " . $v . "<br />";
?>
输出:
Key: id Value: 7
Key: qty Value: test