【问题标题】:PHP Dynamically returning multidimensional arraysPHP动态返回多维数组
【发布时间】:2012-05-24 21:49:24
【问题描述】:

我在学习如何动态返回多维数组方面做了大量工作——但我似乎不知道如何嵌套它们。

我有两张表,每张都有相同的格式:ID、名称。

表一:SSC - sscid - sscname

表二:SRV - srvid - 服务名称

我要做的是在表一列表中的每个项目下打印表二中的所有项目。

表一项目为表头,表二项目作为checkbox(以srvid为值)和label(srvname)返回。

我可以把它全部打印在一起,但它是一个。一个巨大的结果列表,它在一个

| checkbox | table 1: name | table 2: name | format. 

一点也不漂亮(尽管能走到这一步对我来说是一种进步)。

运行查询并获得结果后,我的代码如下所示:

现在,我对 re:the database tables go 的概念设计有了一些额外的想法,但是我读到的所有内容都表明它们确实需要在自己的表上,并且应该能够被引用通过一个表中的键和另一个表中的键(最终在一个带有用户 ID 引用的联合表中结束)因为它们是数字索引的,所以我不知道为什么这对我来说是个问题;但是我似乎无法让它正常工作。

我应该提到,当我更改代码以尝试使 ssc_name 跨越 2 列并使其更像标题时,它会为每个复选框/srv 行返回标题行,而不是为所有复选框/srv行。

if($result) {
    echo '<table border="1" align="center" cellspacing="3" cellpadding="3" width="300">
    <tr><th colspan="2"><h3>Options</h3></th></tr>
    <tr><td></td><td align="left"><b>Services</b></td></tr>';
    $numfields = mysql_num_fields($result);
    $data = array();
    $flist = array();
    for($i=0;$i<$numfields;$i++)$flist[] = mysql_field_name($result,$i);
    $data[0] = $flist;
    while($row = mysql_fetch_assoc($result)) {
        $data[] = $row;
        echo '<tr><td colspan="2" align="center"><b>' . $row['ssc_name'] .'</b><td></tr>
        <tr><td align="center"><input type="checkbox" value="'. $row['ssv_id'] .'" / </td>
        <td align="left">' . $row['ssvname'] . '</td>
        </tr>';
    }
    echo '</table>';
}

谁能帮我解决这个问题,好吗?

【问题讨论】:

  • 很抱歉告诉你,但你的代码不会让人想读它。 HTML,单行for,几乎没有缩进……废话。
  • 你能发布一个正在返回的数据的 var_dump,而不是混入标记吗?还提供您想要的表格的粗略示例(也许将 HTML 粘贴到 jsfiddle.net,以便我们查看)。
  • 它们与第一张和第二张表有关联吗?如果不只是将第一个存储在数组中并在第二个查询的每次迭代中循环遍历它
  • @Samy 我不确定你的意思?但我会尝试编辑和空间。我所有的行都是两个空格缩进,但这可能只是我的设计标准。
  • @juddlyon 我可以做到——bbiab。 tylerpenney 它们是相关的,因为它们是公司工作领域指示的两个部分——我实际上有这个设置的两个版本:两个表,然后这两个表与返回一个 ID 的所有可能组合相结合。因为我只想让它返回数据,所以我不在乎(那么)它的外观;漂亮可以在功能之后。 hth.

标签: php mysql arrays multidimensional-array


【解决方案1】:

您在这一行缺少&gt;

<tr><td align="center"><input type="checkbox" value="'. $row['ssv_id'] .'" / </td>

应该是

<tr><td align="center"><input type="checkbox" value="'. $row['ssv_id'] .'" /></td>

您可以通过更好的格式来学习...

<?php

    if ($result) {      
        echo <<<EOD
<table border="1" align="center" cellspacing="3" cellpadding="3" width="300">
    <tr>        
        <th colspan="2"><h3>Options</h3></th>       
    </tr>       
    <tr>    
        <td></td>       
        <td align="left"><b>Services</b></td>       
    </tr>
EOD;
        while ($row = mysql_fetch_assoc($result)) {         
            echo <<<EOD
    <tr>        
        <td colspan="2" align="center"><b>{$row['ssc_name']}</b><td>            
    </tr>       
    <tr>        
        <td align="center"><input type="checkbox" value="{$row['ssv_id']}" /></td>          
        <td align="left">{$row['ssvname']}</td>         
    </tr>           
EOD;
        }       
        echo '</table>';
    }

?>

而且我不确定这些阵列中有哪些业务。

【讨论】:

  • 谢谢!我应该更新我想通了。我已经实现了更好的格式,并采用了似乎是分隔事物的标准,因此希望未来的问题不会那么难以回答。
猜你喜欢
  • 1970-01-01
  • 2023-02-14
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-11
  • 2017-12-10
相关资源
最近更新 更多