php - 如何从函数内部的foreach循环生成的最后一项中删除最后一个逗号
问题描述
我已经看到了一些类似的问题 - 答案,但我还没有设法做到这一点。有些人建议你用逗号内爆数组,但我不知道在那种特定情况下实现内爆(即使是可能的)。我试图遵循最简单的路径,只删除回显的 html 的第 12 个字符(那个该死的逗号),但我无法将函数本身存储到变量中。我会很感激任何帮助,谢谢!
<?php
function jsonbreadcrumbs($home = 'Home') {
$itemNumber = 1;
$jsonbreadcrumb .= '<script type="application/ld+json">';
$jsonbreadcrumb .= '{';
$jsonbreadcrumb .= '"@context": "http://schema.org",';
$jsonbreadcrumb .= '"@type": "BreadcrumbList",';
$root_domain = ($_SERVER['HTTPS'] ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'].'/';
$jsonbreadcrumbs = array_filter(explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)));
$jsonbreadcrumb .= '"itemListElement": [{';
$jsonbreadcrumb .= '"@type": "ListItem",';
$jsonbreadcrumb .= '"position":' .$itemNumber++.',';
$jsonbreadcrumb .= "\"name\": \"{$home}\",";
$jsonbreadcrumb .= "\"item\": \"{$root_domain}\"},";
foreach ($jsonbreadcrumbs as $crumb) {
$link = ucwords(str_replace(array(".php","-","_"), array(""," "," "), $crumb));
$root_domain .= $crumb . '/';
$jsonbreadcrumb .= '{"@type": "ListItem",';
$jsonbreadcrumb .= '"position":' . $itemNumber++ . ',';
$jsonbreadcrumb .= "\"name\": \"{$link}\",";
$jsonbreadcrumb .= "\"item\": \"{$root_domain}\"},";//<---this last comma,when it belongs to the last item, needs to be removed.
}
$jsonbreadcrumb .= ']}</script>';
return $jsonbreadcrumb;
}
echo jsonbreadcrumbs();
?>
解决方案
只需使用您自己的字符列表trim()它
foreach ($jsonbreadcrumbs as $crumb) {
$link = ucwords(str_replace(array(".php","-","_"), array(""," "," "), $crumb));
$root_domain .= $crumb . '/';
$jsonbreadcrumb .= '{"@type": "ListItem",';
$jsonbreadcrumb .= '"position":' . $itemNumber++ . ',';
$jsonbreadcrumb .= "\"name\": \"{$link}\",";
$jsonbreadcrumb .= "\"item\": \"{$root_domain}\"},";//<---this last comma,when it belongs to the last item, needs to be removed.
}
$jsonbreadcrumb=trim($jsonbreadcrumb,","); // this removes that trailing comma...
$jsonbreadcrumb .= ']}</script>';
推荐阅读
- macos - 无法在 MacOS 上设置 AppleId
- r - Microsoft Graph API - 错误 403“权限不足,无法完成操作”
- sql - 如何在 XMLA 中为 SSAS 使用 SQL?
- oracle - 使用oracle sql,如何将每个数字转换为和9
- python - 在同一网格上绘制多个数组但指定单独的颜色
- java - Spring @Bean Name,不适用于@Qualifier
- javascript - 你怎么知道哪些网站是 HTML 和 JS 以及哪些网站是使用 React、Angular 等通过 JS 呈现的?
- javascript - 从 json 中删除编号的键
- python-3.x - 二叉搜索树获得 AttributeError 的主要乐趣:'BTreeWordFinder' 对象没有属性 'showDepth'
- c - 将录制的声音发送到云端