Cakephp按数组中的第一项排序

时间:2013-09-06 11:04:16

标签: php arrays cakephp sorting

我有一个如下所示的数组:

Data = array(
'Offer' => array(),
'Country' = array('Name' => Array()) 
)

现在,如果我想对Name数组的第一项的值进行排序,我将如何解决这个问题?

到目前为止,我已经尝试过了:

  $dataArray = $originalData['data'];
    $dataArray = Set::sort($dataArray, '{n}.Country.Name', $direction);

然而这不起作用

注意我使用CakePHP set::Sort是Cakephp的一部分

好吧,好像我不够清楚,所以这里有一个更详细的解释我的问题:

所以我在蛋糕中创建了自己的数据源,从API中收集数据。

API以如下所示的方式返回数据:

data = array(
'Offer' => array('id' => 2, 'name' = 'ExampleName'),
'Stat' => array('Stat1' = 1, 'Stat2' = 2),
'Country => array('Name' => array('name1','name2')
);

现在为了让用户能够对这些数据进行排序,我必须确保正确显示。

当只有一个值时,这可以正常工作,例如:

                $dataArray = $originalData['data'];
            $dataArray = Set::sort($dataArray, '{n}.Stat.Stat1', 'ASC);
            $originalData['data'] = $dataArray;

然而country是一个数组,所以为了“复制”上面的代码,我需要使用Country ['Name']数组的第一项。

做这样的事情:

 $dataArray = $originalData['data'];
            $dataArray = Set::sort($dataArray, '{n}.Country.Name', $direction);
            $originalData['data'] = $dataArray;

但是上面的代码失败了......

1 个答案:

答案 0 :(得分:2)

创建测试数据:

     $dataArray = array();
     $data = array(
        'Offer' => array('id' => 2, 'name' => 'ExampleName'),
        'Stat' => array('Stat1' => 1, 'Stat2' => 2),
        'Country' => array('Name' => array('z','name2'))
     );
      array_push($dataArray,$data);

      $data = array(
        'Offer' => array('id' => 2, 'name' => 'ExampleName'),
        'Stat' => array('Stat1' => 1, 'Stat2' => 3),
        'Country' => array('Name' => array('a','name2'))
     );
      array_push($dataArray,$data);

     print_r(Set::sort($dataArray,'{n}.Country.Name','asc')); 

与输出数组的链接:https://gist.github.com/anonymous/6462971