在cakePHP中自定义数组排序

在cakePHP中自定义数组排序,php,cakephp,Php,Cakephp,不确定这是否是做我需要的事情的最佳方式,但这是我的问题。在我的编辑函数视图中,我根据$this->data->expense中的内容重新创建了一个表单字段,但我需要数组按特定顺序排列,或者字段按错误的顺序生成。这是我拥有的阵列: 'Expense' => array( (int) 0 => array( 'id' => '98', 'date' => '2012-08-23', 'sitename' => '1

不确定这是否是做我需要的事情的最佳方式,但这是我的问题。在我的编辑函数视图中,我根据
$this->data->expense
中的内容重新创建了一个表单字段,但我需要数组按特定顺序排列,或者字段按错误的顺序生成。这是我拥有的阵列:

'Expense' => array(
    (int) 0 => array(
        'id' => '98',
        'date' => '2012-08-23',
        'sitename' => '123',
        'detail' => 'Breakfast',
        'amount' => '100.00',
        'miles' => null,
        'total' => '100.00',
        'expense_claim_id' => '63',
        'created' => '2012-08-23 09:08:52',
        'modified' => '2012-08-23 09:08:52',
        'ExpenseClaim' => array(
            'id' => '63',
            'user_id' => '3',
            'claim_status_id' => '1',
            'created' => '2012-08-23 09:08:52',
            'modified' => '2012-08-23 10:14:10',
            'approved' => false,
            'approved_by' => '0',
            'date_submitted' => '2012-08-23 09:08:52'
        ),
        'ExpenseCode' => array(
            (int) 0 => array(
                'id' => '1',
                'name' => 'Plane fare',
                'code' => '1',
                'created' => '2012-07-31 09:52:02',
                'modified' => '2012-07-31 09:53:57'
            )
        )
    ),
这就是我需要订购的方式(
ExpenseCode
)显示在更高的位置:

'Expense' => array(
    (int) 0 => array(
        'id' => '98',
        'date' => '2012-08-23',
        'sitename' => '123',
        'detail' => 'Breakfast',
        'ExpenseCode' => array(
            (int) 0 => array(
                'id' => '1',
                'name' => 'Plane fare',
                'code' => '1',
                'created' => '2012-07-31 09:52:02',
                'modified' => '2012-07-31 09:53:57'
            )
        ),
                    'amount' => '100.00',
        'miles' => null,
        'total' => '100.00',
        'expense_claim_id' => '63',
        'created' => '2012-08-23 09:08:52',
        'modified' => '2012-08-23 09:08:52',
        'ExpenseClaim' => array(
            'id' => '63',
            'user_id' => '3',
            'claim_status_id' => '1',
            'created' => '2012-08-23 09:08:52',
            'modified' => '2012-08-23 10:14:10',
            'approved' => false,
            'approved_by' => '0',
            'date_submitted' => '2012-08-23 09:08:52'
        )
    ),

我怎样才能做到这一点,并且在我发布文章时改变它的结构会影响cake吗?

据我所知,CakePHP上没有内置函数来自定义数组排序。我想您必须使用纯PHP来实现这一点

除非必须动态创建字段,否则我建议您自己添加每个字段

当我发帖时,改变它的结构会影响蛋糕吗


不,如果您只是将字段按不同的顺序排列,这不会影响CakePHP。通过
POST
发送的数据将在数组
$this->data['Expense']
中。使用
$this->model->save()
保存数据时,顺序并不重要。

这毫无意义如果关联数组中的数据顺序导致HTML字段/表单输入……无论顺序如何,都是错误的。

尝试使用键,而不是按顺序循环。或者阅读更多关于关联数组的信息-使用和操作关联数组的数据有很多有趣/简单的事情要做。。。但再次重申,无需按特定顺序返回数据。

编辑:


您始终可以创建一个键数组并重复这些键。这可能是一种更干净的订单管理方式。

您为什么需要它?你不是用键值来调用这些值吗?你需要什么标准来对数组进行排序?同意,在休息并重新访问之后,我重新构造了创建表单帮助器字段的循环,从而按照我需要的顺序创建字段。我把自己绑在数组结构上,试图动态地实现太多内容,而不是硬编码某些永远不会改变的元素。感谢您的输入。同意,在休息并重新访问之后,我重新构造了创建表单帮助器字段的循环,从而按照我需要的顺序创建字段。我把自己绑在数组结构上,试图动态地实现太多内容,而不是硬编码某些永远不会改变的元素。谢谢你的意见。因为这是对实际问题最相关的回答,所以我认为这是正确的。