2013-12-16 53 views
0

我有这样的字符串替换数组:CO2 + H2O + XO需要用绳子

,我会为这个:CO2 + H2O + NaO

我已经研究了这一点,我对如何处理字符串和数组的混合物感到茫然。

$reactant = 'CO2 + H2O + XO'; 

$products = str_split($reactant); 

foreach ($products as $splitresult) 
{ 
    $splitresult = str_replace('X', 'Na', $splitresult); 
} 

echo $splitresult; 
+0

你要更换所有的X的为“NA”,或者只在他们旁边的“O”?我问,因为当你在处理元素时,还有其他元素,包括X,据我所知,如果你只是把它作为一个例子,并不是真实的场景,尽可能指定,所以我们可以工作拿出准确的东西。 – aleation

+0

好的,所以当你在字符串中表示_X_时,你的意思是'$ someElement'。这很容易用'str_replace($ searchFor,$ replaceWith,$ subject)处理' – hanzo2001

+0

我正在研究分解反应。在这个具体的一个,我不知道金属和我使用的地方持有人,即X.它只覆盖AP级别,所以我不期望任何人寻找X或Y元素。 Str_split似乎也比爆炸效果更好。 – Edwinner

回答

2

echo str_replace('X','Na',$ reactant);

2

如果你总是会用加号将加入的元素,你可能会爆炸的字符串,像这样:

$parts = explode(' + ', $reactant); 

然后阵列周围循环

foreach($parts as &$part) { 
    $part = str_replace('X', 'Na', $part); 
} 

然后显示结果,使用加号使阵列重新聚集在一起:

​​
1

那怎么样:

<?php 
$reactant = 'CO2 + H2O + XO'; 
$reactant = str_replace('X', 'Na', $reactant); 
?> 

如果你真的想分裂,因为你的代码是更长的时间,你必须通过键设置,因为$splitresult将每次循环通过后覆盖。这是一个临时变量。这里是做正确的方式:

<?php 
$reactant = 'CO2 + H2O + XO'; 
$products = str_split($reactant); 

foreach($products as $i=>$splitresult) 
{ 
    $products[$i] = str_replace('X', 'Na', $splitresult) ; 
} 
$reactant = implode('',$products); 
?> 
0
<?php 
$reactant = 'CO2 + H2O + XO'; 
$products = explode($reactant, ' + '); 

foreach($products as $key => $splitresult) 
{ 
    $products[ $key ] = str_replace('X', 'Na', $splitresult); 
} 
print_r($products);