创建和存储阵列/动态数组

时间:2013-03-21 10:14:16

标签: php arrays multidimensional-array foreach checkbox

我在创建数组和存储信息方面存在问题,我有一个数据表可能数量无限的表,然后用户将选择一些选项来决定他们可以选择哪些值(这也是然后将这些选项显示在一个复选框中,我使用此代码

<?php foreach ( $results['detailsline'] as $detailsline )
 {
$invoice_details = $detailsline->details_line;

echo $invoice_details;
echo '<input type="checkbox" name="invoice_details" value="'.$invoice_details.'"/>';  
  }             
 ?> 

所以这应该搜索他们之前选择的选项,并将它们分类到一个数组然后进入复选框,但是当我存储信息只是保存最后一个复选框时,我无法更改每个输入EG的值

echo '<input type="checkbox" name="invoice_details[value1]" 
echo '<input type="checkbox" name="invoice_details[value2]" 

因为我不知道会有多少个值/复选框。 我也试过这个

    <?php foreach ( $results['detailsline'] as $detailsline )
 {
$invoice_details[] = $detailsline->details_line;

echo $invoice_details[];
echo '<input type="checkbox" name="invoice_details[]" value="'.$invoice_details.'"/>';  
  }             
 ?> 

更改

    $invoice_details

$invoice_details[]

但这只会存储一个值&#34;数组&#34;在我的数据库中而不是实际值。

请有人帮助我吗?

伊恩

5 个答案:

答案 0 :(得分:0)

试试这个

<?php foreach ( $results['detailsline'] as $detailsline )
 {
$invoice_details = $detailsline->details_line;

echo $invoice_details;
echo '<input type="checkbox" name="invoice_details[]" value="'.$invoice_details.'"/>';  
  }             
 ?> 

答案 1 :(得分:0)

使用<input type="checkbox" name="invoice_details[]">

在您的代码中,您可以使用serialize($invoice_details)保存到数据库中并使用 - unserialize($field_from_db)

第一个函数返回字符串,因此您可以将其保存为字符串字段,第二个函数获取字符串并返回整个数组,以便您可以使用它。

答案 2 :(得分:0)

  

但这只会在我的数据库中存储一个值“Array”而不是实际值。

认为您尝试将Array存储为字符串,因此获得该值 那么可能需要使用implode / serialize / json_encode(Array)来存储数据?

答案 3 :(得分:0)

字面上说代码$invoice_details[] = $detailsline->details_line;意味着获取对象 $ detailsline 的属性 details_line ,并将其值作为新元素插入数组 $ invoice_details 。你确定它是你想要的吗?)我还认为 $ detailsline 是一个数组,但不是对象(你试图将它作为一个对象操作)

答案 4 :(得分:0)

Okey我想你应该试试这个:

<?php 
$i=0;
foreach ( $results['detailsline'] as $detailsline )
{
$invoice_details = $detailsline->details_line;
echo $invoice_details;
echo '<input type="checkbox" name="invoice_details[$i]" value="'.$invoice_details.'"/>';  
$i++;
}             
?>