我正在研究php中的数组功能我面临阵列排序的一些问题。
数组是:
foreach( $employees as $intKey => $Data ) {
$arrstr[$intKey] = $Data['firstname'];
}
array_multisort( $arrstr, SORT_DESC, SORT_STRING, $employees );
我希望这个数组按名字字段排序,不影响任何键值
我用过
$employees = array(
0=> array(
'id' => 3,
'firstname' => 'Bobby',
'lastname' => 'Bob'
),
1=> array(
'id' => 42,
'firstname' => 'Jimmy',
'lastname' => 'Jim'
)
2=> array(
'id' => 13,
'firstname' => 'Marky',
'lastname' => 'Mark'
),
);
但是这个函数正在影响我的主数组的键值,并且像
那样给我输出$employees = array(
213 => array(
'id' => 3,
'firstname' => 'Bobby',
'lastname' => 'Bob'
),
256 => array(
'id' => 42,
'firstname' => 'Jimmy',
'lastname' => 'Jim'
),`enter code here`
123 => array(
'id' => 13,
'firstname' => 'Marky',
'lastname' => 'Mark'
)
);
这里影响我的主数组的键值。
所以请帮助一些如何在不影响键值的情况下获得确切的结果,如:
mex -setup
答案 0 :(得分:0)
1,解决方案可能是使用uksort函数
你只需要传递一个全局变量或静态属性应该被操作的数组,回调函数可以在其上查找关键值。
像:
function sort_on_name( $a , $b ) {
return strcmp(
$GLOBALS['employees'][$a]['firstname'] ,
$GLOBALS['employees'][$b]['firstname']
);
}
$GLOBALS['employees']=$employees;
uksort( $employees , 'sort_on_name' );
2,另一个解决方案可能是在辅助查找数组键值对上(如
)$ sorting = array(' Bobby' => 213,' Jimmy' => 256 ...)
并简单地对其进行排序并使用新的帮助器查找foreach作为原始数组上的查找