PHP:有没有更好的方法对数组的值重新排序?
我有这个阵列:PHP:有没有更好的方法对数组的值重新排序?,php,arrays,Php,Arrays,我有这个阵列: $pets = array( 'cat' => 'Lushy', 'dog' => 'Fido', 'fish' => 'Goldie' ); 如果我需要通过以下方式重新排列阵列: fish dog cat 按照该顺序并假设这些值中的任何一个可能存在或不存在,是否有比以下更好的方法: $new_ordered_pets = array(); if(isset($pets['fish'])) { $new_ordered_pets
$pets = array(
'cat' => 'Lushy',
'dog' => 'Fido',
'fish' => 'Goldie'
);
如果我需要通过以下方式重新排列阵列:
fish
dog
cat
按照该顺序并假设这些值中的任何一个可能存在或不存在,是否有比以下更好的方法:
$new_ordered_pets = array();
if(isset($pets['fish'])) {
$new_ordered_pets['fish'] = $pets['fish'];
}
if(isset($pets['dog'])) {
$new_ordered_pets['dog'] = $pets['dog'];
}
if(isset($pets['cat'])) {
$new_ordered_pets['cat'] = $pets['cat'];
}
var_dump($new_ordered_pets);
产出:
Array
(
[fish] => Goldie
[dog] => Fido
[cat] => Lushy
)
是否有一种更简洁的方法,可能是我不知道的某个内置函数,您只需提供要重新排序的数组和您希望记录该数组的索引,它就能发挥神奇的作用?您可以使用
uksort
根据另一个数组(仅适用于PHP 5.3+)对数组进行排序(按键):
演示:您可以使用
uksort
根据另一个数组对数组进行排序(按键排序)(仅适用于PHP5.3+):
演示:您需要的是
你需要的是
您已经有了顺序,因此只需分配值(): 输出:
Array
(
[fish] => Goldie
[dog] => Fido
[cat] => Lushy
)
相关:您已经有了订单,因此只需分配值(): 输出:
Array
(
[fish] => Goldie
[dog] => Fido
[cat] => Lushy
)
相关:-如果这不是您要查找的函数,请向下滚动查看相关函数的列表,或在左侧查看所有数组函数。嗯,嘿,closvoter,关于数组排序的一般问题是如何本地化的?如果你想关闭它,搜索并找到一个重复的,因为很可能有一个。但不要用虚假的接近事实的理由作弊。@Michael:我想说,闻起来像个傻瓜。因此太本地化了,问题已经被问到并解决了,再问这个问题也太本地化了。@hakre不是我读过的太本地化的定义,甚至一点也不是。我同意,它闻起来也像是一个骗局,因此社区有责任找到它并将其适当地链接起来。@Michael:这可能更正确,是的。-如果这不是您要查找的函数,请向下滚动查看相关函数的列表,或在左侧查看所有数组函数。嗯,嘿,closvoter,关于数组排序的一般问题是如何本地化的?如果你想关闭它,搜索并找到一个重复的,因为很可能有一个。但不要用虚假的接近事实的理由作弊。@Michael:我想说,闻起来像个傻瓜。因此太本地化了,问题已经被问到并解决了,再问这个问题也太本地化了。@hakre不是我读过的太本地化的定义,甚至一点也不是。我同意,它闻起来也像是个骗局,因此社区有责任找到它并将其适当链接。@Michael:这可能更正确,是的。@ExplosionPills:
ksort
如何知道它们的顺序?我想ksort
会按字母顺序排序字符串(或者在这种情况下krsort
)但也许不是。这就是我要问的。实际上我还没有检查过自己。@ExplosionPills:会的,但我想他想要一个自定义排序顺序,而且碰巧是(逆)字母顺序。@ExplosionPills:如何ksort
知道它们的顺序?我想ksort
会按字母顺序排序字符串(或者在这种情况下krsort
)但也许不是。这就是我要问的。实际上我还没有检查过自己。@ExplosionPills:会的,但我想他想要一个自定义排序顺序,而且碰巧是(逆)字母顺序。另一个+1表示数组合并
:-)另一个+1表示数组合并
:-)
$sorted = array_merge(array_flip($order), $pets);
print_r($sorted);
Array
(
[fish] => Goldie
[dog] => Fido
[cat] => Lushy
)