用PHP交换数组值

Ser*_*iza 24 php arrays

我有一个数组:

array(
    0 => 'contact',
    1 => 'home',
    2 => 'projects'
);
Run Code Online (Sandbox Code Playgroud)

我需要将'contact'与'home'交换,所以数组如下:

array(
    0 => 'home',
    1 => 'contact',
    2 => 'projects'
);
Run Code Online (Sandbox Code Playgroud)

我怎么能用PHP做到这一点?:)

voo*_*417 41

我写了简单的函数array_swap:在位置swap_a和之间交换两个元素swap_b.

function array_swap(&$array,$swap_a,$swap_b){
   list($array[$swap_a],$array[$swap_b]) = array($array[$swap_b],$array[$swap_a]);
}
Run Code Online (Sandbox Code Playgroud)

对于OP问题(例如):

$items = array(
  0 => 'contact',
  1 => 'home',
  2 => 'projects'
);

array_swap($items,0,1);
var_dump($items);
// OUTPUT

array(3) {
   [0]=> string(4) "home"
   [1]=> string(7) "contact"
   [2]=> string(8) "projects"
 }
Run Code Online (Sandbox Code Playgroud)

更新 自PHP 7.1以来,可以这样做:

$items = [
  0 => 'contact',
  1 => 'home',
  2 => 'projects'
];

[$items[0], $items[1]] = [$items[1], $items[0]];

var_dump($items);
// OUTPUT

array(3) {
   [0]=> string(4) "home"
   [1]=> string(7) "contact"
   [2]=> string(8) "projects"
 }
Run Code Online (Sandbox Code Playgroud)

通过Symmetric数组解构可以实现.


Pri*_*lon 38

试试这个:

$a = array(
    0 => 'contact',
    1 => 'home',
    2 => 'projects'
);
$temp = $a[0];
$a[0] = $a[1];
$a[1] = $temp;
Run Code Online (Sandbox Code Playgroud)


sac*_*een 7

只需使用临时变量来保存一个值,当你交换另一个时.然后使用temp变量恢复第一个.对于数字,还有其他方法不需要使用临时变量,但这里是最好的(仅?)方式.

$a = array(
    0 => 'contact',
    1 => 'home',
    2 => 'projects'
);

print_r($a);
Array ( [0] => contact [1] => home [2] => projects )

$tmp = $a[0];
$a[0] = $a[1];
$a[1] = $tmp;

print_r($a);
Array ( [0] => home [1] => contact [2] => projects )
Run Code Online (Sandbox Code Playgroud)

  • 为什么_PriestVallon_的答案有更多的投票并被接受?你的前五分钟到达并且实际上完全一样(这让我害怕,他骗了你的答案)? (2认同)

Bri*_*ica 7

在 PHP 7.1+ 语法中,你可以使用这个

[$Array[$a], $Array[$b]] = [$Array[$b], $Array[$a]];
Run Code Online (Sandbox Code Playgroud)