1

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

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

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

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

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

然而这并没有奏效

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

好吧,看来我不够清楚,所以这里是我的问题的更详细的解释:

所以我在 cake 中创建了自己的数据源,从 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['Name'] 数组的第一项。

做这样的事情:

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

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

4

1 回答 1

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

于 2013-09-06T14:33:21.887 回答