在cakeHP中自定义排序数组


Custom sorting an array in cakePHP

不确定这是否是完成所需任务的最佳方式,但这是我的问题。在我的编辑函数视图中,我根据$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'
        )
    ),

我如何才能做到这一点,当我发帖时,改变它的结构会影响蛋糕吗?

据我所知,CakePHP上没有自定义排序数组的内置函数。我想你将不得不用纯PHP来做这件事。https://stackoverflow.com/search?q=custom+排序+数组+php

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

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

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

这毫无意义如果关联数组中的数据顺序导致HTML字段/表单输入。。不管顺序有错,你都做错了

试着使用按键,而不是按顺序循环。或者阅读更多关于关联数组的内容——使用&操纵他们的数据。。。但再次重申,不需要按特定顺序返回数据

编辑:

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