2011-06-25 3 views
1

私は多くの定数を設定しています。 私はそれらの定数名を持つ可能性のあるデータベースからフレーズを持っています。変数内の可能な定数の置換

定数名を値に置き換えたいとします。

Constants: 
Array 
(
[WORK1] => Pizza Delivery 
[WORK2] => Chauffer 
[WORK3] => Package Delivery 
) 

変数:

$variable[0] = "I like doing WORK1"; 
$variable[1] = "Nothing here move along"; 
$variable[2] = "WORK3 has still not shown up."; 

私は彼らの右の定数バレスでそれらの変数になるだろうどのように?定数の順序は、変数と同様にソートされません。/

$keys = array_keys($constants); 
$vals = array_values($constants); 

そしてarray_keyを呼び出すのではなく、それらを直接使用します。

foreach ($variable as &$v) 
{ 
    $v = str_replace(array_keys($constants), array_values($constants), $v); 
} 
unset($v); 

ループの前にこのような何かを行うには、おそらくより最適であることに注意してください:

答えて

1

は同じくらい簡単であるべきすべての反復中に値を返します。あくまで最初のを処理していないため、

foreach ($variable as &$v) 
{ 
    $v = strtr($v, $constants); 
} 
unset($v); 

、あなたは関係なく、定数のソート方法の一貫性のある動作を取得する必要があります:

そして考え直し上、これはおそらく最高です。

+0

thats great、それは動作します:)しかし、私は笑を望むよりもうまく動作します。とにかく "WORK"で始まる定数名に置き換えるだけですか?今はget_defined_constants()から他の文字を置き換えています。配列はかなり大きいです。 –

+0

ok私はそれをうまく行った:) –

+0

@Joanあなたは、意図しない置換の数を制限するために、プレースホルダとして '%WORK1%'のようなものを使う方が良いかもしれません。最初に定数キーを繰り返して、必要に応じて変更するだけです。 – Matthew

関連する問題