我已经打了几次,只是想知道是否有人知道为什么会这样。
我传递的数组来自WHM / cPanel API,格式为(var_dump()ed):
array (size=14)
'_diskquota' => string '262144000' (length=9)
'_diskused' => string '31459' (length=5)
'diskquota' => string '250' (length=3)
'diskused' => string '0.03' (length=4)
'diskusedpercent' => string '0' (length=1)
'diskusedpercent20' => string '0' (length=1)
'domain' => string 'xxxxxxx.co.uk' (length=20)
'email' => string 'info@xxxxxxx.co.uk' (length=25)
'humandiskquota' => string '250Â MB' (length=7)
'humandiskused' => string '30.72Â KB' (length=9)
'login' => string 'info@xxxxxxx.co.uk' (length=25)
'mtime' => string '1347964089' (length=10)
'txtdiskquota' => string '250' (length=3)
'user' => string 'info' (length=4)
我将其转换为具有以下功能的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 User Domain Disk Quota Disk Used
2 2 2 2 2
3 3 3 3 3
2 2 2 2 2
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
b b b b b
i i i i i
2 2 2 2 2
3 3 3 3 3
i i i i i
1 1 1 1 1
2 2 2 2 2
i i i i i
我看不出为什么会将任何值截断/转换为表中输出的值。
有没有人知道为什么会发生这种情况,因为这些过程应该非常简单,但表现得很奇怪?
答案 0 :(得分:3)
您的$email_accounts
数组是一个二维数组,您在foreach
循环中进行迭代,此时$v
表示该数组的单个属性。
理想情况下,您需要重新构建数组才能使函数正常工作,quickfix可能会执行以下操作:
$email_accounts = array($email_accounts);
哪会给你:
array
0 =>
array
'_diskquota' => string '262144000' (length=9)
'_diskused' => string '31459' (length=5)
'diskquota' => string '250' (length=3)
答案 1 :(得分:3)
您的$email_accounts
数组结构如下:
array(
'x1' => 'y',
'x2' => 'y'
)
在您的代码中应该是这样的:
array(
0 => array(
'x1' => 'y',
'x2' => 'y'
),
1 => array(
'x1' => 'y',
'x2' => 'y'
)
)