【问题标题】:How do I add some info in between a loop?如何在循环之间添加一些信息?
【发布时间】:2011-01-28 23:47:55
【问题描述】:
$data = explode(",", $str);
$names = array();
for ( $i = 0; $i < count($data); $i+=3) {  
    $names[] = $data[$i];
}

假设这给出了结果:

mathews,neil,ambrose,glen,ethan

我想在ambrose 之前添加and 所以最终结果是:

mathews,neil, and ambrose

【问题讨论】:

    标签: php for-loop while-loop


    【解决方案1】:

    由于您已经在使用计数器$i,您只需执行以下检查:

    if ($i === count($data) - 2) {
        echo ' and ';
    }
    

    ...或其他任何东西。不一定是echo

    【讨论】:

    • @leon 我认为count 是最后一个,-1 是最后一个,-2 是倒数第二个。在我脑海中的假 PHP 循环中,我在倒数第二个之后添加了 and,而不是在最后一个之前。
    • 但是如何在上面的循环中添加这个??
    • @leon 我真的不认为你可以,你现在的方式。看起来您正在将值添加到数组中,然后只是 echoing 数组。我错了吗?
    • 哦,我也在考虑同样的问题,但似乎 Gus 的想法可行,但我需要从一开始就计算它。我只想要前三个结果,在两个之后我需要添加 AND。请记住,总数据最多可以是 12 或 14,它会有所不同
    【解决方案2】:
    $data = explode(",", $str);
    for ($i = 0; $i<count($data)-1; $i++) {
       $sentence = $sentence.$data[$i].", ";
    }
    $sentence = $sentence."and ".end($data).".";
    echo $sentence;
    

    这将做的是将除最后一个之外的所有名称用逗号存储在一个变量中,然后在最后一个带有“and”之前添加最后一个。

    那个变量 - $sentence - 然后被回显(显示)。

    编辑: 只显示前三个结果很简单。

    $data = explode(",", $str);
    echo $data[0].", ".$data[1].", and ".$data[2];
    

    $data[x] 只返回其中一个名称,按顺序存储。

    【讨论】:

    • 你不能直接爆破$data,编辑最后一个在它前面加上“and”,然后用“,”加入吗?
    • 我认为他想使用上面的代码作为基础。但是,是的,这将是一个很好的方法。
    • 如何从头数数?说我只想要前三个结果??
    【解决方案3】:

    你应该避免这种操作的循环,它们会给你的代码增加不必要的复杂度。

    // put the last element of $data to $lastName, and remove the last element from $data
    $lastName = array_pop($names);
    echo join(',',$names) . ' and ' . $lastName;
    

    还有很多这样的单行变体:

    // replace the last ",name" with " and name"
    echo preg_replace('/(,)[a-z]+$/', ' and ', join(',', $names));
    

    但是对于没有经验的 PHP 开发人员来说,他们不会很清楚。

    编辑,如果您愿意放弃示例中已有的数组,您可以这样做。

    $str = "mathews,neil,ambrose,glen,ethan";
    $names = array_slice(explode(',', $str), 0, 3);
    $lastName = array_pop($names);
    echo join(',', $names) . ' and ' . $lastName;
    

    【讨论】:

    • 我同意,但在这里我想要前三个名字。在第二个名字之后添加和..在这种情况下我如何在没有循环的情况下做到这一点??
    • 如果您保留已有的循环,它将为您提供所需的 3 个名称。然后在生成的 $names 数组上使用上述任一示例。
    • 如果您愿意放弃已经提供的代码,可以执行我的最后一个示例。
    • 是的,哇..你是怎么学会这些的??什么是学习 PHP 的最佳方法?我需要如何学好我的是自学曲线,因此它有很多缺点
    • 我建议,任何时候你发现自己使用了很多或循环(尤其是数组)和 if 语句,快速查看在线 php 文档并找到替代方案。 PHP 提供了足够多的数组和字符串函数,可以轻松替换大部分代码。我建议在 youtube 上的 yahoo 和 google dev 频道上进行良好的循环,以获得良好的开发实践。并且研究设计模式,它们是必须的!
    猜你喜欢
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 2021-08-06
    • 1970-01-01
    相关资源
    最近更新 更多