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

时间:2013-11-05 09:32:12

标签: php html arrays zend-framework

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

<?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是如何做到这一点的。我的问题在这里是否有人可以告诉我如何在第一次重复中打印数组中的第一个结果。 并且我不知道我是否可以使用该键来选择数组值,但如果我们可以不知道该怎么做。

3 个答案:

答案 0 :(得分:1)

如果您只是在循环之前尝试订购数组,那么PHP有几个选项:

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

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

答案 1 :(得分:1)

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

const DELIVERED = 0; const OPEN = 1; ...

$阵列[自:: DELIVERED]

答案 2 :(得分:1)

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

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