Php 如何更改数组的值

Php 如何更改数组的值,php,arrays,preg-match,Php,Arrays,Preg Match,我有这个阵列: BEGIN_BROWSER 54 msie6.0 7 safari5.0.3 5 chrome18.0.1025.308 1 firefox20.0 4 . . END_BROWSER 为了让我改变这个值,我这样做: preg_match("/BEGIN_BROWSER(.*)END_BROWSER/is", $awstats, $matches); $browser = $matches[0] ; //

我有这个阵列:

BEGIN_BROWSER 54
msie6.0 7
safari5.0.3 5
chrome18.0.1025.308 1
firefox20.0 4
.
.
END_BROWSER
为了让我改变这个值,我这样做:

preg_match("/BEGIN_BROWSER(.*)END_BROWSER/is", $awstats, $matches);
            $browser = $matches[0] ;               
          //  print_array($browser);

$newline = "
"; 
            $lines = explode($newline,$browser);
            $results = array();
            foreach($lines as $line) {
                $parts = explode(" ",trim($line),2);
                if( count($parts) < 2) continue;
                else {
                   $results[$parts[0]] = intval($parts[1]);
                }
            }
           $results["InternetExplorer"] = 0;
            foreach($results as $key => $value){
              if(strpos($key,"msie") !== false){
                 $results["InternetExplorer"] += $value;
                 unset($results[$key]);
              }
            }
preg\u match(/BEGIN\u BROWSER(.*)END\u BROWSER/is“,$awstats,$matches);
$browser=$matches[0];
//打印数组($browser);
$newline=”
"; 
$lines=explode($newline,$browser);
$results=array();
foreach($line作为$line){
$parts=explode(“”,trim($line),2);
如果(计数($parts)<2)继续;
否则{
$results[$parts[0]]=intval($parts[1]);
}
}
$results[“InternetExplorer”]=0;
foreach($结果为$key=>$value){
if(strpos($key,“msie”)!==false){
$results[“InternetExplorer”]+=$value;
未设置($results[$key]);
}
}

结果我得到的不是msie,而是InternetExplorer。有没有办法改为
internetexplorer
,在单词之间加空格?谢谢

您可以使用
preg\u replace
更改字符串:

foreach($results as $key => $value){

    $key = preg_replace('/InternetExplorer/', 'Internet Explorer', $key);

    if(strpos($key,"msie") !== false){

首先,我建议用某个特定字符替换
\n\r
,然后用该特定字符分解字符串,因为不推荐使用拆分新行的方法。
现在,请尝试解决方案

$browsers = str_replace("\n\r", '~~', $awstats);
$browsers = explode('~~', $browsers);
$results = array();
$results['Internet Explorer'] = 0;
foreach($browsers as $b) {
   $parts = explode(" ",trim($b),2);
   if( count($parts) < 2) continue;
   else {
       if ($parts[0] == 'msie') {
          $results['Internet Explorer'] = $results['Internet Explorer'] + intval($parts[1]);
       }
       else {
          $results[$parts[0]] = intval($parts[1]);
       }
   }
}
$browsers=str\u replace(“\n\r”、“~~”、$awstats);
$browsers=分解(“~~”,$browsers);
$results=array();
$results['internetexplorer']=0;
foreach($b){
$parts=explode(“”,trim($b),2);
如果(计数($parts)<2)继续;
否则{
如果($parts[0]==“msie”){
$results['internetexplorer']=$results['internetexplorer']+intval($parts[1]);
}
否则{
$results[$parts[0]]=intval($parts[1]);
}
}
}

我不明白你在问什么。您想将
$results[“InternetExplorer”]
更改为
$results[“Internet Explorer”]
?是的!但是当我这样做时,它不会改变第一个
msie
$results[“Internet Explorer”]=0
?我必须定义var
InternetExplorer
并初始化它!那么,为什么不能定义
Internet Explorer
并初始化