我有一个如下所示的数组:
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;
但是上面的代码失败了......
答案 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'));