【问题标题】:Creating and Storing an array / Dynamic array创建和存储数组/动态数组
【发布时间】:2013-03-21 19:02:20
【问题描述】:

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

<?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[]

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

谁能帮帮我?

伊恩

【问题讨论】:

    标签: php arrays multidimensional-array foreach checkbox


    【解决方案1】:

    好吧,我想你应该试试这个:

    <?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++;
    }             
    ?>
    

    【讨论】:

    • 看来我的问题是将值存储到数据库中,我想我需要将其转换为字符串但不知所措。感谢您的回复。
    • 您对 $i 的使用非常适合让 echo 工作,非常感谢。现在只需将数组存储为字符串。
    【解决方案2】:

    试试这个

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

    【讨论】:

    • 感谢您的回复,我需要在提交之前将数组转换为字符串,因为我发现我使用的第一组代码正在工作并在每次数组迭代中存储正确的值但是将选定的框转换为字符串时我很困惑
    【解决方案3】:

    使用&lt;input type="checkbox" name="invoice_details[]"&gt;

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

    第一个函数返回字符串,所以你可以将它保存为字符串字段,第二个函数获取字符串并返回整个数组,这样你就可以使用它了。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        字面意思是代码$invoice_details[] = $detailsline-&gt;details_line; 表示获取对象$detailsline 的属性details_line 并将其值作为新元素插入数组$invoice_details .你确定这是你想要的吗?)另外我认为 $detailsline 是一个数组,而不是对象(你试图将它作为一个对象来操作)

        【讨论】:

          猜你喜欢
          • 2019-01-29
          • 2020-11-08
          • 1970-01-01
          • 1970-01-01
          • 2012-06-29
          • 2021-09-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多