2014-01-28 2 views
1
<?php 
$original_chars = array(
    '/A/','/B/','/C/' 
); 
$replaced_chars = array(
    'a','b','c' 
); 
$updated_filename = preg_replace($original_chars, $replaced_chars, $filename); 
?> 

Мне нужно объединить два массива с символами в один ассоциативный массив.Как мне переписать код?

Как переписать строку с preg_replace из предыдущего образца кода?

<?php 
$array_chars = array(
    '/A/' => 'a', 
    '/B/' => 'b', 
    '/C/' => 'c' 
); 
//$updated_filename = preg_replace($original_chars, $replaced_chars, $filename); 
?> 
+0

Почему вы хотите переписать его ? Разве это не работает? – itamar

+2

'array_keys()', array_values ​​() ' – zerkms

+3

Я бы переписал его в Klingon –

ответ

1

Вы должны быть в состоянии использовать array_keys и array_values (непроверенные)

$updated_filename = preg_replace(array_keys($original_chars), array_values($replaced_chars), $filename); 
1

Сначала вообще лучший способ сделать это strtr()

$filename = strtr($filename, "ABC", "abc"); 

или

$array_chars('A' => 'a', 'B' => 'b', 'C' => 'c'); 
$filename = strtr($filename, $array_chars); 

Для использования preg_replace с ассоциативным массивом, вы должны use array_keys():

$result = preg_replace(array_keys($array_chars), $array_chars, $filename); 

(обратите внимание, что этот способ не очень полезно и что array_values() не требуется.)

+0

«этот способ не очень полезен» --- какие-либо подробности об этом? – zerkms

+0

Нет реального преимущества использовать array_keys вместо создания двух отдельных массивов. –

+1

есть - один массив вместо 2 - его легче обрабатывать и управлять – zerkms

Смежные вопросы