Здравствуйте. В интернете есть туча примеров как заменить значения одного массива на другое. Но нигде (за несколько часов) я не нашёл, как же в массиве заменить только те значения, которые соответствуют определённым критериям.
Вот функции array_replace
или str_replace
могут заменить значения одного массива Array(0=>'odin',1=>'dva',2=>'tri');
на другое Array(0=>'one',1=>'two',2=>'three');
Но я никак не могу понять, как же заменить только часть строки, чтоб получилось примерно так:
// было так
Array(0=>'odin',1=>'dva',2=>'tri');
// а хочу получить так
Array(0=>'o(d)[i]n',1=>'(d)va',2=>'tr[i]');
Т.е. букву i
заменить на [i]
, а букву d
заменить на (d)
Единственный вариант, который я могу реализовать, такой (но хотел бы вариант, с регулярками):
foreach(Array(0=>'odin',1=>'dva',2=>'tri')as$y=>$z)
{
// дальше с каждым значением работать отдельно,
// а после всё собирать в отдельный массив
}
Use the array_map
function, Luke!
$arr = ['odin', 'dva', 'tri'];
// array_map проходится по массиву, заменяя значения на возвращённое значение
$arr = array_map(function($el){
// Заменяем все d и i
return preg_replace_callback("/d|i/", function($found){
return $found[0] === 'd' ? '(d)' : '[i]';
}, $el);
}, $arr);
var_dump($arr);
https://repl.it/FEIG/0
Use str_replace;
$arr = Array(0=>"odin",1=>"dva",2=>"tri");
foreach ($arr as $r=>$z)
{
$arr[$r] = str_replace("i","[i]",$z);
$arr[$r] = str_replace("d","(d)",$arr[$r]);
}
Фрилансер или Digital-агентство - Как сделать правильный выбор?
Добрый день уважаемые, только начал осваивать данную ORV библиотеку и столкнулся с проблемой что она не хочет у меня подключатьсяНе могу понять...
С массивом $array все работает верно, добавляется определенное количество строк и заносится в каждую строку ячейка со значением $array = $_POST[form_text_o];...