0

我有一个非常简单的数组,如下所示:

Array ( [friend_id] => 180 [user_id] => 175 )

我想要做的只是切换值,以便成为:

Array ( [friend_id] => 175 [user_id] => 180 )

PHP中有没有优雅的非静态方式来做到这一点?

4

5 回答 5

3

你可以使用array_combinearray_reverse

$swapped = array_combine(array_keys($arr), array_reverse(array_values($arr)));
于 2013-07-19T15:11:15.513 回答
2

否。使用临时值:

$temp = $array['friend_id'];
$array['friend_id'] = $array['user_id'];
$array['user_id'] = $temp;
于 2013-07-19T15:11:06.820 回答
0

有点长,但我认为它满足您对 2 个元素数组的要求,就像您在示例中使用的那样:

// your input array = $yourarray;
$keyarray = array_keys($yourarray);
$valuearray = array_values($yourarray);
/// empty input array just to make sure
$yourarray = array();
$yourarray[$keyarray[0]] = $valuearray[1];
$yourarray[$keyarray[1]] = $valuearray[0];

基本上Orangepill的答案是手动完成的......

于 2013-07-19T15:45:34.453 回答
0

使用array_flip怎么样?

数组 array_flip ( 数组 $trans )

$myar = array('apples', 'oranges', 'pineaples');                                   print_r($myar);                                                                   
print_r(array_flip($myar));      
Array
(
    [0] => apples
    [1] => oranges
    [2] => pineaples
)
Array
(
    [apples] => 0
    [oranges] => 1
    [pineaples] => 2
)
于 2013-09-10T04:32:25.573 回答
-1
$tmp = $array['user_id'];
$array['user_id'] = $array['friend_id'];
$array['friend_id'] = $tmp;
于 2013-07-19T15:11:57.750 回答