Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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中将数组转换为HTML表的函数的奇怪的单字符输出_Php_Html_Arrays - Fatal编程技术网

在PHP中将数组转换为HTML表的函数的奇怪的单字符输出

在PHP中将数组转换为HTML表的函数的奇怪的单字符输出,php,html,arrays,Php,Html,Arrays,我有几次碰到这个问题,只是想知道是否有人知道为什么会发生这种情况 我传递的数组来自WHM/cPanel API,其形式为(var_dump()ed): 我使用以下函数将其转换为HTML表: public function formatEmailAccountsArrayToTable( $email_accounts ) { $returnHTML = ''; $topentag = '<table class="email_accounts_table">

我有几次碰到这个问题,只是想知道是否有人知道为什么会发生这种情况

我传递的数组来自WHM/cPanel API,其形式为(var_dump()ed):

我使用以下函数将其转换为HTML表:

public function formatEmailAccountsArrayToTable( $email_accounts )  {
    $returnHTML = '';
    $topentag   =   '<table class="email_accounts_table">';
    $theader    =   '<thead><tr>
                        <th>Email</th><th>User</th><th>Domain</th><th>Disk Quota</th><th>Disk Used</th>
                        </tr></thead><tbody>';
    $tclosetag  =   '</tbody></table>';

    $returnHTML .= $topentag . $theader;

    foreach( $email_accounts as $v ) {
        $returnHTML .= '
            <tr>
                <td>' . $v['email'] . '</td>
                <td>' . $v['user'] . '</td>
                <td>' . $v['domain'] . '</td>
                <td>' . $v['diskquota'] . '</td>
                <td>' . $v['diskused'] . '</td>
            </tr>';
    }
    $returnHTML .= $tclosetag;

    return $returnHTML;
}
我不明白为什么任何值都会被截断/转换为表中输出的值


有人知道为什么会发生这种情况吗?因为过程应该非常简单,但行为异常?

您的
$email\u accounts
数组是一个二维数组,您在
foreach
循环中对其进行迭代,此时
$v
表示该数组的单个属性

理想情况下,为了使函数正常工作,您需要重新构造数组,快速修复方法是执行以下操作:

$email_accounts = array($email_accounts);
这将给你:

array
  0 => 
    array
      '_diskquota' => string '262144000' (length=9)
      '_diskused' => string '31459' (length=5)
      'diskquota' => string '250' (length=3)

您的
$email\u accounts
数组是一个二维数组,您在
foreach
循环中对其进行迭代,此时
$v
表示该数组的单个属性

理想情况下,为了使函数正常工作,您需要重新构造数组,快速修复方法是执行以下操作:

$email_accounts = array($email_accounts);
这将给你:

array
  0 => 
    array
      '_diskquota' => string '262144000' (length=9)
      '_diskused' => string '31459' (length=5)
      'diskquota' => string '250' (length=3)

您的
$email\u帐户
数组结构如下:

array(
    'x1' => 'y', 
    'x2' => 'y'
)
在代码中工作应该是这样的:

array(
    0 => array(
        'x1' => 'y', 
        'x2' => 'y'
    ), 
    1 => array(
        'x1' => 'y', 
        'x2' => 'y'
    )
)

您的
$email\u帐户
数组结构如下:

array(
    'x1' => 'y', 
    'x2' => 'y'
)
在代码中工作应该是这样的:

array(
    0 => array(
        'x1' => 'y', 
        'x2' => 'y'
    ), 
    1 => array(
        'x1' => 'y', 
        'x2' => 'y'
    )
)

检查您的$v是否真的包含您期望的内容-对我来说,似乎$v是字符串检查您的$v是否真的包含您期望的内容-对我来说,似乎$v是字符串