为了账号安全,请及时绑定邮箱和手机立即绑定

基于另一个数组按键对数组进行排序?

基于另一个数组按键对数组进行排序?

PHP
喵喔喔 2019-06-24 11:16:00
基于另一个数组按键对数组进行排序?在PHP中可以这样做吗?你打算怎么写一个函数?下面是一个例子。秩序是最重要的。$customer['address'] = '123 fake st';$customer['name'] = 'Tim';$customer['dob'] = '12/08/1986';$customer['dontSortMe'] =  'this value doesnt need to be sorted';我想做这样的事情$properOrderedArray = sortArrayByArray($customer, array('name', 'dob', 'address'));因为在结束时,我使用了foreach(),它们没有按正确的顺序排列(因为我将值附加到一个字符串中,该字符串需要以正确的顺序排列,而且我不知道所有的数组键/值)。我看过PHP的内部数组函数,但似乎只能按字母或数字排序。
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

给你:

function sortArrayByArray(array $array, array $orderArray) {
    $ordered = array();
    foreach ($orderArray as $key) {
        if (array_key_exists($key, $array)) {
            $ordered[$key] = $array[$key];
            unset($array[$key]);
        }
    }
    return $ordered + $array;}


查看完整回答
反对 回复 2019-06-24
?
潇湘沐

TA贡献1816条经验 获得超6个赞

PHP>=5.3.0的另一种方式:

$customer['address'] = '123 fake st';$customer['name'] = 'Tim';$customer['dob'] = '12/08/1986';
$customer['dontSortMe'] = 'this value doesnt need to be sorted';$customerSorted = array_replace(array_flip(array('name', 'dob', 'address')), 
$customer);

结果:

Array (
  [name] => Tim
  [dob] => 12/08/1986
  [address] => 123 fake st  [dontSortMe] => this value doesnt need to be sorted)

适用于字符串和数字键。


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 636 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信