PHP 按顺序显示键 => 值数组


PHP display key => value array in order

我想从组织为 Key => 值的数组中填充一个 html 表,我使用 zend Framework,我在这里的问题是 Php 不尊重数组中值的顺序,当我必须在 html 代码中打印它们时这是我的控制器:

<?php
class Dashboard_LogsController extends Dashboard_Library_Custom_Controller_Dashboard
{   
    function array_merge_rec($arrays) 
    {
        $result = array();
        $keys = array('delivred','open', 'click', 'unsubscribe', 'soft', 'hard', 'deferred');
        foreach ($arrays as $key => $value) {
            if (is_array($value)) {
                foreach ($value as $item) {
                    $result[$item['isp']][$key] = $item['count'];
                }
            }
        }
        $results = array();
        foreach($result as $key => $value)
        {
            foreach($keys as $k)
            {
                if(!isset($result[$key][$k])) $result[$key][$k] = 0;
            }
        }
        return $result;
    }
    public function logsAction()
    {   
        $this->view->headLink()->appendStylesheet(STATIC_URL . '/css/bootstrap.datetimepicker.min.css');
        $this->view->headScript()->appendFile(STATIC_URL . '/js/bootstrap.datetimepicker.min.js');

        $log_review = new Dashboard_Model_DbTable_logs();

        $open = $log_review->getOpen();
        $click = $log_review->getClick();
        $unsubscribe = $log_review->getUnsubscribe();
        $deferred = $log_review->getDeferred();
        $delivred = $log_review->getSent();
        $SB = $log_review->getSB();
        $HB = $log_review->getHB();
        $result = $this->array_merge_rec(array('delivred'=>$delivred,'open' => $open, 'click' => $click, 'unsubscribe' => $unsubscribe, 'hard' => $HB, 'soft' => $SB, 'deferred'=>$deferred));
        $this->view->data = $result; 
    }

}

我用来在屏幕上显示表格的 HTML 代码如下:

      <div class="row-fluid">
     <div class="span12 meter-legend meter-statistics">
        <table>
        <tr>
        <th>ISP</th><th>Email address</th><th>Delivred</th><th>Open</th><th>Clicks</th><th>Unsubscribed</th><th>Hard</th><th>Soft</th><th>Deferred</th>
        </tr>
        <?php foreach($this->data as $name => $isp) { ?>
        <?php
        $sum =0;
         foreach($isp as $key => $value) { 
        $sum =$sum+$value;
        } 
        if ($sum >= 500) {?>
        <tr>
        <td><?php echo $name; ?></td>
        <td><?php echo $sum; ?></td>
        <?php foreach($isp as $key => $value) { ?>
        <td><?php echo $value; ?></td>
        <?php } ?>
        </tr>
        <?php } ?>
        <?php } ?>
        </table>

所以这段代码填充了表格,但不尊重列的顺序,我真的不知道 php 是如何做到这一点的。我在这里的问题,如果有人可以告诉我如何在第一个数组中打印第一个结果......重复。我不知道我是否可以使用键来选择数组值,但如果可以,我真的不知道该怎么做。

如果你只是想在循环之前对数组进行排序,PHP 有几个选项给你:

http://php.net/manual/en/array.sorting.php

选择适合您的排序函数,按照您想要的方式对数组进行排序,然后您就可以毫无问题地执行 foreach() 循环。

PHP 按键对数组进行排序。在这种情况下,您应该使用 int 值作为数组的键。对于一个好的解决方案,您可以使用宏:

常量交付 = 0;常量打开 = 1;...

$array[自我::D埃利弗]

打印前对数组进行排序。这个特定的数组将按键从低到高对数组进行排序,但请查看 Malcom 发布的链接以查看所有选项。

<?php 
    ksort($this->data);         
    foreach($this->data as $name => $isp) {       
    // YOUR CODE HERE
   } 
 ?>