Удалить и вставить в определенную позицию строки в php

#c# #php #string

#c# #php #строка

Вопрос:

Привет, ребята, это C# код, который я хочу изменить на php code, но в нем нет функции insert and remove php

 for (int i = 0; i < st.Length; i  )
{
     NewPlace = i * Convert.ToUInt16(st[i]);
     NewPlace = NewPlace % st.Length;
     ch = st[i];
     st = st.Remove(i, 1);
     st = st.Insert(NewPlace, ch.ToString());
}
  

Комментарии:

1. Вы пробовали написать что-нибудь самостоятельно? Люди не будут писать код для вас здесь, в SO.

2. у вас есть пример ввода и вывода или любой код, который вы пробовали, есть substr() и substr_replace() просто назовите две функции, которые работали бы для этого. Также строки PHP можно довольно легко превратить в массивы с str_split($str,1) помощью.

3. это просто функция кодирования для строки. например: ввод: «1234abcd» вывод: «21cbd34a»

Ответ №1:

Я веду себя st как array , потому что удаление имеет смысл в arrays не strings , тогда ваш код в PHP выглядит следующим образом:

 for($i=0;$i < count($st); $i  )
{
    $NewPlace = $i * intval($st[$i]);
    $NewPlace = $NewPlace % count($st);
    $ch = $st[$i];
    unset($st[$i]);
    $st[$NewPlace] = $ch;
}
$st = array_values($st);
  

в PHP вы можете удалить элемент массива с помощью unset()
последняя строка привела к перестановке массива для заполнения пробелов после unset()

Дайте мне знать, если это сработает.

ПРИМЕЧАНИЕ

если вы хотите использовать это для строк, просто добавьте эти две строки до и после приведенного выше скрипта.

 $st = str_split($st);  //# insert before first line
$st = implode('',$st); //# insert after last line
  

Комментарии:

1. Спасибо. это мне очень помогло