繁体   English   中英

PHP IF语句如何写得更优雅有效

[英]PHP IF Statement how can I write it more elegant and effective

我现在基于以下一些答案获得此代码。

这是最优雅,干净,快速和有效的代码吗?

<?php
/**
 * The default template for displaying Google Analytics
 *
 * @package WordPress
 * @subpackage News_Template
 * @since News Template 1.0
 */
$googleanalyticscode="<script type='text/javascript'> var _gaq = _gaq || []; _gaq.push(['_setAccount', '%s']); _gaq.push(['_setDomainName', '%s']);   _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script>";
$analyticsurlgoogle=array(
    'domain-a.com' => 'UA-25133-2',
    'domain-b.com' => 'UA-25133',
    'domain-c.com' => 'UA-2699-2',
    'domain-d.com' => 'UA-3021-2',
    'domain-e.com' => 'UA-25537-2',
    'domain-f.com' => 'UA-7213-2',
    'domain-g.com' => 'UA-7214-2',
    'domain-h.com' => 'UA-150-2',
    'domain-i.com' => 'UA-150-2'
); 
// --- /Configuration --- 
// Get the Domain URL 
$analyticsurl = get_site_url(); 
$namegoogle = substr($analyticsurl,7); 
//create code 
if (isset($analyticsurlgoogle[$namegoogle])) $code=sprintf($googleanalyticscode,$analyticsurlgoogle[$namegoogle],$namegoogle); 
else $code=''; 
echo $code; ?>

------先前的代码------

我已经用PHP编写了以下if语句。 编写此代码的最优雅,有效和最干净的方法是什么?

该代码的目的是检查站点的域名。 如果网站定义了Google Analytics(分析),则该网站应与为域定义的“ Google Analytics(分析)”代码匹配,然后将脚本输出到页面。

如果未定义Google Analytics(分析)代码,则不应显示任何内容!

<?php 
// Get the Domain URL
$analyticsurl = get_site_url();
// Check if domain is defined
if ($analyticsurl == 'http://domain-a.com') {$analyticcode = 'UA-25133920-1'; $analyticsurlname = 'domain-a.com';} // domain-a.com
if ($analyticsurl == 'http://domain-b.com') {$analyticcode = 'UA-25133920-1'; $analyticsurlname = 'domain-b.com';} // domain-b.com
if ($analyticsurl == 'http://domain-c.com') {$analyticcode = 'UA-26990264-1'; $analyticsurlname = 'domain-c.com';} // domain-c.com
if ($analyticsurl == 'http://domain-d.com') {$analyticcode = 'UA-30217571-1'; $analyticsurlname = 'domain-d.com';} // domain-d.com
if ($analyticsurl == 'http://domain-e.com') {$analyticcode = 'UA-25537388-1'; $analyticsurlname = 'domain-e.com';} // domain-e.com
// if domain is defined create Google Analytics Code and insert variables
$analyticscode_1 = "<script type='text/javascript'>
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', '".$analyticcode."']);
  _gaq.push(['_setDomainName', '".$analyticsurlname."']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>";
// if URL does not match write nothing
if ($analyticcode == '') {$analyticscode = '';}
// if URL exists set the Google Analytics Code
if ($analyticcode != '') {$analyticscode = $analyticscode_1;}
?>
<?php // write the Analytics code to the page
echo $analyticscode ?>

使用parse_url解析网址(或使用正则表达式删除http://部分)。

将所有代码放在一个数组中,其中key是域名。 然后,这是一个简单的查找。

$codes = array(
 'domain-a.com' => 'UA-25133920-1',
  //...
);
<?php

// --- Configuration ---

$template="<script type ... 
  _gaq.push(['_setAccount', '%s']);
  _gaq.push(['_setDomainName', '%s']);
  ...
</script>";

$urls=array(
 'domain-a.com' => 'UA-25133920-1',
 ...
 'domain-e.com' => 'UA-25537388-1'
);

// --- /Configuration ---

// Get the Domain URL
$url = get_site_url();
$name = substr($analyticsurl,7);

//create code
if (isset($urls[$name])) $code=sprintf($template,$urls[$name],$name);
else $code='';

// ...

echo $code;
?>

一个switch语句。

我会将所有记录保存在一个数组中,这样我就不会一次又一次地重复条件。

$siteurl = get_site_url();

$analyticsurl = array(
    'http://domain-a.com' => 'UA-25133920-1', 
    'http://domain-b.com' => 'UA-25133920-1', 
    'http://domain-c.com' => 'UA-26990264-1', 
    'http://domain-d.com' => 'UA-30217571-1', 
    'http://domain-e.com' => 'UA-25537388-1'
);

if(in_array($siteurl, $analyticsurl)) {
    $analyticcode = $analyticsurl[$siteurl];
    $analyticsurlname = str_replace('http://', '', $siteurl);
}

考虑使用switch语句:

switch ($analyticsurl)
{
 case: 'http://domain-a.com':
 // do some stuff
 break;

 case: 'http://domain-b.com':
 // do some stuff
 break;

 case: 'http://domain-c.com':
 // do some stuff
 break;

 case: 'http://domain-d.com':
 // do some stuff
 break;

 case 'http://domain-e.com':
 // do some stuff
 break;

 default:
 // do something by default if no match
 break;
}
<?php 

$domains['http://domain-a.com']['code'] = 'UA-25133920-1';
$domains['http://domain-a.com']['urlname'] = 'domain-a.com';
$domains['http://domain-b.com']['code'] = 'UA-25133920-1';
$domains['http://domain-b.com']['urlname'] = 'domain-b.com';
...

// Get the Domain URL
$analyticsurl = get_site_url();

// Check if domain is defined
if (array_key_exists($analyticsurl)) {
    // if domain is defined create Google Analytics Code and insert variables
?>
    <script type='text/javascript'>
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', '<?php= $domains[$analyticsurl]['code'] ?>']);
      _gaq.push(['_setDomainName', '<?php= $domains[$analyticsurl]['urlname'] ?>']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
<?php
}
?>

$domains['http://domain-b.com']['urlname'] = 'domain-b.com'; 可以改进,因为您只剥离了HTTP部分,但是我懒得为此提供解决方案。

使用开关块:

switch ($analyticsurl) {
    case: 'http://domain-a.com' :
        $analyticcode = 'UA-25133920-1';
        $analyticsurlname = 'domain-a.com';
    break;
    default:
    break;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM