组2D数组数据按一个列数据,然后按另一列排序 我有一个我想通过值求助于数组的数组。 这是现有数组: 1 =>数组(9) orgid =>“ xxxx” dob =>“ 1970-01-01” persyid =>“ 111111” E ...

问题描述 投票:0回答:1

WELITE => (3) 1 => Array (9) OrgID => "XXXX" DOB => "1970-01-01" PersonID => "111111" ExpDate => "2013-07-31" Status => "Active" FName => "Jane" LName => "Doe" Checked => null 2 => Array (9) OrgID => "XXXX" DOB => "1970-01-01" PersonID => "222222" ExpDate => "2013-07-31" Status => "Active" FName => "Jane" LName => "Doe" Checked => null 3 => Array (9) OrgID => "XXXX" DOB => "1970-01-01" PersonID => "22222" ExpDate => "2013-07-31" Status => "Active" FName => "Jane" LName => "Doe" Checked => null

到目前为止,我已经尝试过的地方:
    $sort = array();
foreach($WlevelArray as $k=>$v) {
    $sort['Level'][$k] = $v['Level'];
    $sort['OrgID'][$k] = $v['OrgID'];
}
array_multisort($sort['Level'], SORT_DESC, $sort['OrgID'], SORT_ASC, $WlevelArray);

但这产生了两个阵列。
    

根据我认为您的目标我在下面包含代码。

设置数组:

$example1 = array( "OrgID" => "XXXX", "DOB" => "1970-01-01", "PersonID" => "111111", "ExpDate" => "2013-07-31", "Level" => "WELITE", "Status" => "Active", "FName" => "Jane", "LName" => "Doe", "Checked" => null ); $example2 = array( "OrgID" => "XXXX", "DOB" => "1970-01-01", "PersonID" => "222222", "ExpDate" => "2013-07-31", "Level" => "WELITE", "Status" => "Active", "FName" => "Jane", "LName" => "Doe", "Checked" => null ); $example3 = array( "OrgID" => "XXXX", "DOB" => "1970-01-01", "PersonID" => "22222", "ExpDate" => "2013-07-31", "Level" => "WELITE", "Status" => "Active", "FName" => "Jane", "LName" => "Doe", "Checked" => null ); // Initial array $initArray = array($example1, $example2, $example3);
php arrays sorting grouping associative-array
1个回答
3
投票

现在让我们“排序”:

$finalArray = array(); $i = 0; foreach ($initArray as $key => $value) { (isset($value['Level'])) ? $finalArray[$value['Level']][$i] = $value : NULL; unset($finalArray[$value['Level']][$i]['Level']); $i++; } echo '<pre>', print_r($finalArray, true), '</pre>';

输出:

Array ( [WELITE] => Array ( [0] => Array ( [OrgID] => XXXX [DOB] => 1970-01-01 [PersonID] => 111111 [ExpDate] => 2013-07-31 [Status] => Active [FName] => Jane [LName] => Doe [Checked] => ) [1] => Array ( [OrgID] => XXXX [DOB] => 1970-01-01 [PersonID] => 222222 [ExpDate] => 2013-07-31 [Status] => Active [FName] => Jane [LName] => Doe [Checked] => ) [2] => Array ( [OrgID] => XXXX [DOB] => 1970-01-01 [PersonID] => 22222 [ExpDate] => 2013-07-31 [Status] => Active [FName] => Jane [LName] => Doe [Checked] => ) ) )

eDit

我确实在更改“级别”值时确实发现了一个问题,因为我使用自动提出变量$i

,该索引将不断增加。因此,我添加了
sort($finalArray[$value['Level']]);
并重置索引值。
foreach ($initArray as $key => $value) { (isset($value['Level'])) ? $finalArray[$value['Level']][$i] = $value : NULL; unset($finalArray[$value['Level']][$i]['Level']); // Add this line to fix indexes sort($finalArray[$value['Level']]); $i++; }

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.