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
?我必须定义varInternetExplorer
并初始化它!那么,为什么不能定义Internet Explorer
并初始化它
?