2013-07-30 5 views
6

Ho 2 array uno con segnaposto che sono le chiavi in ​​un altro arraySostituire i segnaposto in array con i valori da altre serie

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

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

Così come posso girare su arr1 e sostituire i segnaposto con valore da arr2?

risposta

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

manca un '''? –

+0

+1 è stato bello grazie –

+0

, come se fosse +1 –

0

Certo, ecco un modo per farlo. Ha bisogno di un piccolo amore, e 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 
);