PHP数组:计算类似的输出并显示
我试图做的是获取一个数组输出,该数组输出的引用列表保存在数据库中,用于某个链接。到目前为止,我已经得到了它,但我无法得到相同的推荐人计数,而不是显示他们一次又一次。 以下是我编写的函数:PHP数组:计算类似的输出并显示,php,arrays,Php,Arrays,我试图做的是获取一个数组输出,该数组输出的引用列表保存在数据库中,用于某个链接。到目前为止,我已经得到了它,但我无法得到相同的推荐人计数,而不是显示他们一次又一次。 以下是我编写的函数: <?php function get_links_ref($astats) { $sExistedLink= ''; $sMyLinkSQL = "SELECT * FROM `log` WHERE `shorturl`='{$astats}' ORDER BY `click_i
<?php
function get_links_ref($astats) {
$sExistedLink= '';
$sMyLinkSQL = "SELECT * FROM `log` WHERE `shorturl`='{$astats}' ORDER BY `click_id` DESC";
$aLinks = $GLOBALS['oSysDB']->getAll($sMyLinkSQL);
foreach ($aLinks as $astats => $aLinkInfo) {
$reff = $aLinkInfo['referrer'];
$areff = parse_url($reff);
if($areff['host'] == 't.co' || $areff['host'] == 'www.twitter.com' || $areff['host'] == 'api.twitter.com'){
$areff['host'] = "Twitter";
}
if($areff['host'] == 'www.facebook.com' || $areff['host'] == 'm.facebook.com'){
$areff['host'] = "Facebook";
}
if($areff['host'] == 'bit.ly' || $areff['host'] == 'lilink.it'){
$areff['host'] = "Direct";
}
$sExistedLink .= <<<EOF
<p>{$areff['host']}</p>
EOF;
}
return $sExistedLink;
}
作为回报,我得到了如下列表作为示例:
脸谱网
啁啾
脸谱网
脸谱网
推特
是否有可能编辑此代码,因为我可以得到这样的东西,括号中相同的引用总数计数
Facebook 3
Twitter 2在浏览阵列时保留一个计数器:
$counts = array();
foreach ($aLinks as $astats => $aLinkInfo) {
$reff = $aLinkInfo['referrer'];
$areff = parse_url($reff);
if($areff['host'] == 't.co' || $areff['host'] == 'www.twitter.com' || $areff['host'] == 'api.twitter.com'){
$counts["Twitter"] = isset( $counts["Twitter"]) ? ($counts["Twitter"] + 1) : 1;
}
if($areff['host'] == 'www.facebook.com' || $areff['host'] == 'm.facebook.com'){
$counts["Facebook"] = isset( $counts["Facebook"]) ? ($counts["Facebook"] + 1) : 1;
}
if($areff['host'] == 'bit.ly' || $areff['host'] == 'lilink.it'){
$counts["Direct"] = isset( $counts["Direct"]) ? ($counts["Direct"] + 1) : 1;
}
}
现在,您可以按如下方式形成字符串并将其打印出来:
foreach( $counts as $site => $count)
{
$sExistedLink .= "<p>$site ($count)</p>";
}
只需稍加修改即可使用精确的代码
function get_links_ref($astats) {
$sExistedLink= '';
$sMyLinkSQL = "SELECT * FROM `log` WHERE `shorturl`='{$astats}' ORDER BY `click_id` DESC";
$aLinks = $GLOBALS['oSysDB']->getAll($sMyLinkSQL);
foreach ($aLinks as $astats => $aLinkInfo) {
$reff = $aLinkInfo['referrer'];
$areff = parse_url($reff);
if($areff['host'] == 't.co' || $areff['host'] == 'www.twitter.com' || $areff['host'] == 'api.twitter.com'){
$areff['host'] = "Twitter";
}
if($areff['host'] == 'www.facebook.com' || $areff['host'] == 'm.facebook.com'){
$areff['host'] = "Facebook";
}
if($areff['host'] == 'bit.ly' || $areff['host'] == 'lilink.it'){
$areff['host'] = "Direct";
}
if(!isset($array_count[$areff['host']])) $array_count[$areff['host']] = 0;
$array_count[$areff['host']]++;
}
foreach ($array_count as $key => $value) {
$sExistedLink .= <<<EOF
<p>$key ($value)</p>
EOF;
}
return $sExistedLink;
}
提示2:阅读mysqlgroup-BY和COUNT,请正确缩进您的代码,没有ita很难理解。小示例代码将很有帮助please@Ayaz马利克:作为一名程序员,你应该知道如何编程。编程比复制粘贴要难一点道歉,我不是一个好的程序员。。。尝试通过为自己编写测试脚本来学习:{在学习过程中设置$counts[Direct]?$counts[Direct]+1-这个复制粘贴驱动的代码可以通过使用key.k ic引入一个变量来避免,但是现在它开始给出这样的结果:facebook1 facebook2 facebook3而不是facebook3@Ayaz-不,不是。你一定是复制不正确,或者打印不正确,因为。它似乎有一些错误,我正在工作我正在修理它们。