Solución:
Escribí una función simple array_swap
: intercambia dos elementos entre posiciones swap_a
Y swap_b
.
function array_swap(&$array,$swap_a,$swap_b){
list($array[$swap_a],$array[$swap_b]) = array($array[$swap_b],$array[$swap_a]);
}
Para la pregunta OP (por ejemplo):
$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"
}
Actualizar
Desde PHP 7.1 es posible hacerlo como:
$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"
}
Es posible mediante la desestructuración de matrices simétricas.
Prueba esto:
$a = array(
0 => 'contact',
1 => 'home',
2 => 'projects'
);
$temp = $a[0];
$a[0] = $a[1];
$a[1] = $temp;
Simplemente use una variable temporal para mantener un valor mientras intercambia el otro. Luego restaure el primero con la variable temp. Para los números, existen otros métodos que no requieren el uso de variables temporales, pero aquí es la mejor (¿única?) Forma.
$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 )
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)