php中的多种多维关联数组

时间:2015-11-25 13:34:48

标签: php arrays sorting multidimensional-array

我正在研究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

1 个答案:

答案 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作为原始数组上的查找