我想知道你是否可以帮助我减少我的代码。
我为客户端网站构建了一个定制的 share include。它工作正常,但我相信你们中的一个聪明很多可以帮助我减少它的体积。
我有三个共享网址:
$share_url_facebook
,$share_url_twitter
和$share_url_linkedin
。
每个网址的结构都不同,而且相当复杂。
然后我有以下代码:
echo '<a href="' . $share_url_facebook . '" title="Share this on facebook">';
echo '<i class="fa fa-facebook"></i>';
echo '</a>';
echo '<a href="' . $share_url_twitter . '" title="Share this on twitter">';
echo '<i class="fa fa-twitter"></i>';
echo '</a>';
echo '<a href="' . $share_url_linkedin . '" title="Share this on LinkedIn">';
echo '<i class="fa fa-linkedin"></i>';
echo '</a>';
有没有办法让我创建某种循环来防止重复?
根据@JasonK接受的解决方案,这是我的最终(简化)测试代码:
$share = [
'facebook' => [
'title' => 'Facebook',
'url' => 'https://www.facebook.com/'
],
'twitter' => [
'title' => 'Twitter',
'url' => 'https://twitter.com'
],
'linkedin' => [
'title' => 'LinkedIn',
'url' => 'https://linkedin.com'
]
];
foreach ($share as $key => $details) {
echo '<a href="' . $details['url'] . '" title="Share this on ' . $details['title'] . '">';
echo '<i class="fa fa-' . $key . '"></i>';
echo '</a>';
}
答案 0 :(得分:3)
正如你已经建议的那样;创建一个数组并迭代它。
$social = [
'facebook' => [
'title' => 'Facebook'
'url' => 'https://facebook.com'
],
'twitter' => [
'title' => 'Twitter'
'url' => 'https://twitter.com'
],
'linkedin' => [
'title' => 'LinkedIn'
'url' => 'https://linkedin.com'
]
];
foreach ($social as $key => $details) {
echo 'Key ' . $key;
echo 'Title ' . $details['title'];
echo 'URL ' . $details['url'];
}
答案 1 :(得分:1)
您可以使用数组来存储&#34; config&#34;。 Key是服务名称,value是url或带url的变量。
之后,您可以使用foreach迭代此数组。 在foreach中,您可以使用echo或其他函数输出字符串,或将asigne字符串输出到变量。我使用sprintf格式化所有字符串而没有受到污染,并将其分配给变量http://php.net/manual/en/function.sprintf.php
$services [
'facebook' => $share_url_facebook,
'twitter' => $share_url_twitter
]
$output = '';
foreach ($services as $serviceName => $url) {
$output += sprintf(
'<a href="%s" title="Share this on %s"><i class="fa fa-%s"></i></a>',
$url,
ucfirst($serviceName),
$serviceName
);
}
答案 2 :(得分:1)
对此有一个更短的解决方案,它使用PHP动态变量,并不强制您创建包含所有细节的数组。
这样你就可以保留旧的变量。这个特别有用,如果它们来自你自己写的文件,因此不能/不想改变
yy[2] = y - (r+yc)/2;