2013-07-30 4 views
6

У меня есть два массива один с заполнителем, которые являются ключами в другой массивЗаменить заполнителей в массив со значениями из другого массива

arr1 = array(
    "id"  => "{{verticalId}}", 
    "itemPath" => "{{verticalId}}/{{pathId}}/"); 

arr2 = array(
     "verticalId" => "value1", 
     "pathId"  => "value2"); 

Так как я могу работать на arr1 и заменить заполнители со значением от arr2?

ответ

5
foreach ($arr1 as $key => &$value) { 
    $value = preg_replace_callback('/\{\{(.*?)\}\}/', function($match) use ($arr2) { 
     return $arr2[$match[1]]; 
    }, $value); 
} 
+0

Отсутствует '' '? –

+0

+1 что было круто –

+0

thanx, нравится +1 –

0

Несомненно, это один из способов сделать это. Это требует немного любви, хотя, и PHP 5.3+

<?php 
$subject = array(
    'id' => '{{product-id}}' 
); 

$values = array(
    'product-id' => 1 
); 

array_walk($subject, function(& $item) use ($values) { 
    foreach($values as $template => $value) { 
     $item = str_replace(
      sprintf('{{%s}}', $template), 
      $value, 
      $item 
     ); 
    } 
}); 

var_dump(
    $subject 
); 
Смежные вопросы