How to replace array values according to a value replace map in PHP? -
assume have array:
$origin = ['value1', 'value2', 'value3', 'value4'];
and replace map array:
$replace_map = [ 'value1' => 'replace1', 'value2' => 'replace2', 'value8' => 'replace8', ];
i want replace $origin
array , expect result be:
$result = myreplace($origin, $replace_map); $result = ['replace1', 'replace2', 'value3', 'value4'];
i can loop $origin
, each items lookup $replace_map
array_key_exists
, , replace value in $replace_map
,
but think not best way, sounds not efficient.
is there better way this?
further more, if origin values integers, negative, keys in map array positive,
like:
$origin = [-12345, 23456]; $map = [12345 => 98765];
also need change -12345
-98765
.
$origin = ['value1', 'value2', 'value3', '-2']; $replace_map = [ 'value1' => 'replace1', 'value2' => 'replace2', 'value8' => 'replace8', 2 => 77 ]; $new = array_map(function($i) use($replace_map) { return preg_replace_callback('/^(-)*(.+)$/', function($m) use($replace_map) { if(!isset($replace_map[$m[2]])) return($m[0]); return $m[1] . $replace_map[$m[2]]; },$i); }, $origin); print_r($new);
result
array ( [0] => replace1 [1] => replace2 [2] => value3 [3] => -77 )
Comments
Post a Comment