Intereting Posts

Переместить элемент массива с определенным ключом в первую позицию в массиве, PHP

Какой самый элегантный способ в PHP перемещать элемент массива, выбранный ключом, в первую позицию?

Входные данные:

$arr[0]=0; $arr[1]=1; $arr[2]=2; .... $arr[n]=n; $key=10; 

Вывод:

 $arr[0]=10; $arr[1]=0; $arr[2]=1; $arr[3]=2; .... $arr[n]=n; 

Нет необходимости отключать ключи. Чтобы это было коротко, просто сделайте так, как следует

 //appending $new in our array array_unshift($arr, $new); //now make it unique. $final = array_unique($arr); 

демонстрация

Использовать array_unshift :

 $new_value = $arr[n]; unset($arr[n]); array_unshift($arr, $new_value); с $new_value = $arr[n]; unset($arr[n]); array_unshift($arr, $new_value); 

Старый вопрос, и уже ответил, но если у вас есть ассоциативный массив, вы можете использовать array_merge.

 $arr = array_merge(array($key=>$arr[$key]), $arr); 

Что-то вроде этого должно работать. Проверьте, существует ли массив, его значение, затем unset его, затем используйте array_unshift чтобы создать элемент снова и поместить его в начале.

 if(in_array($key, $arr)) { $value = $arr[$key]; unset($arr[$key]); array_unshift($arr, $value); } с if(in_array($key, $arr)) { $value = $arr[$key]; unset($arr[$key]); array_unshift($arr, $value); } 
 <?php $key = 10; $arr = array(0,1,2,3); array_unshift($arr,$key); var_dump($arr) //10,0,1,2,3 ?> 
 $arr[0]=0; $arr[1]=1; $arr[2]=2; $arr[3]=10; $tgt = 10; $key = array_search($tgt, $arr); unset($arr[$key]); array_unshift($arr, $tgt); // var_dump( $arr ); array 0 => int 10 1 => int 0 2 => int 1 3 => int 2 с $arr[0]=0; $arr[1]=1; $arr[2]=2; $arr[3]=10; $tgt = 10; $key = array_search($tgt, $arr); unset($arr[$key]); array_unshift($arr, $tgt); // var_dump( $arr ); array 0 => int 10 1 => int 0 2 => int 1 3 => int 2 

Поскольку любой цифровой ключ будет переиндексирован с помощью array_unshift (как указано в документе ), лучше использовать оператор объединения массива + для перемещения элемента с определенным ключом в первой позиции массива:

 $item = $arr[$key]; unset($arr[$key]); $arr = array($key => $item) + $arr; с $item = $arr[$key]; unset($arr[$key]); $arr = array($key => $item) + $arr; 
 $tgt = 10; $key = array_search($tgt, $arr); for($i=0;$i<$key;$i++) { $temp = $arr[$i]; $arr[$i] = $tgt; $tgt = $temp; } 

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