@f_u_s_s
Любопытный кодер

Как заменить некоторое число символов зная их порядковые номера?

Доброго времени суток! Сразу к сути:
Есть строка вида

11010010101101
и ключ, массив, например:

array(
'3' => '1', 
'5' => '1', 
'10' => '1'
);

строка хранится в базе, ключ передается в $_SESSION

Задумка такова, что получив строку из базы, позиция 3, 5, 10 заменяются с 0 на 1 (отсчет позиций начинается с 1). Т.е. на выходе должна получиться строка вида:

11111010111101

пробовал через str_split() загнать строку из бд в массив посимвольно, но не могу додумать как полученными двумя массивами (строки и ключей) обращаться, чтоб добиться желаемого результата.

Данный массив-ключ приведен для примера, сам по себе он динамический и может иметь от 1 до количества символов в изменяемой строке (в данном случае до 14) ячеек.

Надеюсь на Вашу помощь. Заранее благодарен!

UPD: [РЕШЕНИЕ]
function genNew($word, $key_array=array())
{
	$split_word = str_split($word);
	foreach ($key_array as $key => $array_elements)
	{
	    $split_word[$key-1] = $array_elements;
	}

	$new_word = implode($split_word);

	return $new_word;
}


применение:
$a = '11010010101101';
$places_array  = array(
    '3' => '1',
    '5' => '1',
    '10' => '1'
);

echo genNew($a, $places_array);
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
valerium
@valerium
Изобретая велосипед
К строке можно обращаться как к массиву символов по индексам. У Вас уже есть список индексов и необходимых значений, нужно только взять и подставить.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
65536
@65536
$a = '11010010101101';
$b = '00101000010000';

print decbin(bindec($a)|bindec($b));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы