Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于键中字符的PHP分离数组_Php_Arrays_Forms - Fatal编程技术网

基于键中字符的PHP分离数组

基于键中字符的PHP分离数组,php,arrays,forms,Php,Arrays,Forms,我有一个来自提交表单的PHP数组,如下所示 $form_data = Array ( [input_1_1] => Product Name [input_1_2] => $8.00 [input_1_3] => 2 [input_2_1] => Other Product Name [input_2_2] => $3.50 [input_2_3] => 8 ) 我正在寻找解析此内容的最佳方法,以便构建如下标记

我有一个来自提交表单的PHP数组,如下所示

$form_data = Array (
    [input_1_1] => Product Name
    [input_1_2] => $8.00
    [input_1_3] => 2
    [input_2_1] => Other Product Name
    [input_2_2] => $3.50
    [input_2_3] => 8
)
我正在寻找解析此内容的最佳方法,以便构建如下标记:

<table>
    <tr>
        <td>Product Name</td>
        <td>$8.00</td>
        <td>2</td>
    </tr>
    <tr>
        <td>Other Product Name</td>
        <td>$3.50</td>
        <td>8</td>
    </tr>
</table>

品名
$8.00
2.
其他产品名称
$3.50
8.
做这件事最合乎犹太教的方式是什么

我是否应该根据第一个数字将此数组拆分为更小的数组(然后循环)? 或者,我应该基于三个集合构建标记,如:

<table>
    <tr>
        <td><?php echo $form_data[1]; ?></td>
        <td><?php echo $form_data[2]; ?></td>
        <td><?php echo $form_data[3]; ?></td>
    </tr>
    <tr>
        <td><?php echo $form_data[4]; ?></td>
        <td><?php echo $form_data[5]; ?></td>
        <td><?php echo $form_data[6]; ?></td>
    </tr>
</table>


非常感谢您的帮助/建议。

看看这个例子:

预期的HTML格式:

foreach( $chunk as $val ){
    echo "<tr>";
    foreach($val as $v){
        echo "<td>" . $v . "</td>";
     }
    echo "</tr>";
}
foreach($chunk作为$val){
回声“;
外币($val为$v){
回声“$v.”;
}
回声“;
}
试试这个
$form_data = Array (
'[input_1_1]' => 'Product Name',
'[input_1_2]' => '$8.00',
'[input_1_3]' => '2',
'[input_2_1]' => 'Other Product Name',
'[input_2_2]' => '$3.50',
'[input_2_3]' => '8'
);

echo "&lt;table&gt;";
foreach($form_data as $k=>$v)
{
echo "&lt;tr&gt;";
echo "&lt;td&gt;".$v."&lt/td&gt;";
echo "&lt;/tr&gt;";
}
echo "&lt;/table&gt;";
假设每个表行各有3个元素

<?php

echo "<table>
        <tr>";

$form_data = Array (
    "input_1_1" => "Product Name",
    "input_1_2" => "$8.00",
    "input_1_3" => "2",
    "input_2_1" => "Other Product Name",
    "input_2_2" => "$3.50",
    "input_2_3" => "8"
);

$intRowBefore = 1;
foreach( $form_data as $strKey => $strVal ) {

   $intRow = explode("_", $strKey)[1];

   if( $intRowBefore != $intRow ) {
      echo "</tr><tr>";
      $intRowBefore = $intRow;
   }

   echo "<td>". $strVal ."</td>";


}

echo "</tr></table>";
考虑

<?php
$form_data = array();
$form_data['input_1_1'] = 'Product Name';
$form_data['input_1_2'] = '$8.00';
$form_data['input_1_3'] = '2';
$form_data['input_2_1'] = 'Other Product Name';
$form_data['input_2_2'] = '$3.50';
$form_data['input_2_3'] = '8';

// Get unique keys
function get_unique_keys($keys)
{
    $arr = array();
    foreach($keys as $k=>$v){
        $arr[] = substr($k, 0, strlen($k)-2);
    }
    return array_unique($arr);
}

$keys = get_unique_keys($form_data);

// Output
printf("<table>\n");
foreach($keys as $k)
{
    printf("  <tr>\n");
    printf("    <td>%s</td>\n", $form_data[$k.'_1']);
    printf("    <td>%s</td>\n", $form_data[$k.'_2']);
    printf("    <td>%s</td>\n", $form_data[$k.'_2']);
    printf("  </td>\n");
}
printf("</table>\n");


是否有可能修改表单以使用数组样式名称?可能-请提供一个数组样式名称的示例?另一个XY问题:这不是预期的输出。它用新行打印每个值。只需将<替换为>并将其固定,谢谢。你们这些PHP开发者是一群很有帮助的人!
foreach ($_POST['name'] AS $i => $name) {
    $price = $_POST['price'][$i];
    $quantity = $_POST['quantity'][$i];
    // Output the table row
}
$form_data = Array (
'[input_1_1]' => 'Product Name',
'[input_1_2]' => '$8.00',
'[input_1_3]' => '2',
'[input_2_1]' => 'Other Product Name',
'[input_2_2]' => '$3.50',
'[input_2_3]' => '8'
);

echo "&lt;table&gt;";
foreach($form_data as $k=>$v)
{
echo "&lt;tr&gt;";
echo "&lt;td&gt;".$v."&lt/td&gt;";
echo "&lt;/tr&gt;";
}
echo "&lt;/table&gt;";
<?php

echo "<table>
        <tr>";

$form_data = Array (
    "input_1_1" => "Product Name",
    "input_1_2" => "$8.00",
    "input_1_3" => "2",
    "input_2_1" => "Other Product Name",
    "input_2_2" => "$3.50",
    "input_2_3" => "8"
);

$intRowBefore = 1;
foreach( $form_data as $strKey => $strVal ) {

   $intRow = explode("_", $strKey)[1];

   if( $intRowBefore != $intRow ) {
      echo "</tr><tr>";
      $intRowBefore = $intRow;
   }

   echo "<td>". $strVal ."</td>";


}

echo "</tr></table>";
<?php
$form_data = array();
$form_data['input_1_1'] = 'Product Name';
$form_data['input_1_2'] = '$8.00';
$form_data['input_1_3'] = '2';
$form_data['input_2_1'] = 'Other Product Name';
$form_data['input_2_2'] = '$3.50';
$form_data['input_2_3'] = '8';

// Get unique keys
function get_unique_keys($keys)
{
    $arr = array();
    foreach($keys as $k=>$v){
        $arr[] = substr($k, 0, strlen($k)-2);
    }
    return array_unique($arr);
}

$keys = get_unique_keys($form_data);

// Output
printf("<table>\n");
foreach($keys as $k)
{
    printf("  <tr>\n");
    printf("    <td>%s</td>\n", $form_data[$k.'_1']);
    printf("    <td>%s</td>\n", $form_data[$k.'_2']);
    printf("    <td>%s</td>\n", $form_data[$k.'_2']);
    printf("  </td>\n");
}
printf("</table>\n");
<table>
  <tr>
    <td>Product Name</td>
    <td>$8.00</td>
    <td>$8.00</td>
  </td>
  <tr>
    <td>Other Product Name</td>
    <td>$3.50</td>
    <td>$3.50</td>
  </td>
</table>
<?php
$form_data = array(
    'input_1_1' => 'Product Name',
    'input_1_2' => 8.00,
    'input_1_3' => 2,
    'input_2_1' => 'Other Product Name',
    'input_2_2' => 3.50,
    'input_2_3' => 8
);
end($form_data);
$counter = explode('_',key($form_data));
?>

<table>
    <?php
    $i = 1;
    $j = 1;
    for ($k = 1; $k <= $counter[1]; $k++) {
        ?>
        <tr>
            <td><?php echo $form_data['input_' . $j . '_' . $i]; ?></td>
            <td><?php $i++;echo $form_data['input_' . $j . '_' . $i]; ?></td>
            <td><?php $i++;echo $form_data['input_' . $j . '_' . $i]; ?></td>
        </tr>
        <?php
        if ($i == 3) {
            $i = 1;
            $j++;
        }
    }
    ?>
</table>