Обмен значениями массива с помощью php

У меня есть массив:

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

и мне нужно поменять «контакт» на «home», поэтому массив будет выглядеть так:

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

как я могу это сделать с PHP? 🙂

Solutions Collecting From Web of "Обмен значениями массива с помощью php"

Попробуй это:

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

Я написал простую функцию array_swap : 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]); } 

Для вопроса 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" } 

Просто используйте временную переменную, чтобы удерживать одно значение при замене другого. Затем восстановите первую переменную 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 ) 

Просто используйте временную переменную, чтобы удерживать ее. Так

 $temp = array[0]; array[0] = array[1]; array[1] = temp; 

Таким образом, вы не потеряете ценность одного из них.

Если вы хотите избежать использования временного хранилища данных или любите использовать array_replace() .

array_replace() будет производить корректировки в соответствии с индексами:

Код: ( Демо )

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

Вывод:

 array ( 0 => 'home', 1 => 'contact', 2 => 'projects', ) 
 $array = array( 0 => 'home', 1 => 'contact', 2 => 'projects' ); $t = $array[0]; $array[0] = $array[1]; $array[1] = $t; 

было бы достаточно простым подходом …

 $x = array('a', 'b', 'c', 'd'); array_splice($x, 1, 2, array_reverse(array_slice($x, 1, 2))); var_dump($x); 

array_splice может заменить обратный array_slice

В синтаксисе PHP 7.1 вы можете использовать этот

 [$Array[$a], $Array[$b]] = [$Array[$b], $Array[$a]] 

Если вы не хотите использовать другую переменную:

  $array[0] = $array[0] + $array[1]; $array[1] = $array[0] - $array[1]; $array[0] = $array[0] - $array[1];