【问题标题】:PHP regex equivalent of nth-child [closed]PHP正则表达式相当于nth-child [关闭]
【发布时间】:2016-03-18 16:10:06
【问题描述】:

我需要通过它们的位置来识别数组中的一些对象,我正在努力解决逻辑问题。我正在寻找 PHP 等效的 nth-child(5n + 1) 作为条件,从而导致对象位于循环内的位置 0, 5, 10, et al.。

从逻辑上讲,除以 5 并查找整数可能是最简单的,例如0/5 = 0 pass, 1/5 = .2 fail, 5/5 = 1 pass.

如果

for ($i = 0; $i < $total; $i++) {

    // obviously this doesn't work because it's nonsense :)
    $rhythm = preg_match(/^(\d+){N % 5 == 0}/, $i)

    if ($rhythm) {

        // is 0, 5, 10,
        // etc
    } else {

        // 1, 2, 3, 4,
        // 6, 7, 8, 9,
        // etc
}

【问题讨论】:

  • 为什么是正则表达式?如果$i是一个数字,你就不能说if($i % 5 === 0)吗?
  • 当然,尝试使用正则表达式进行数学运算是无稽之谈。
  • 你考虑过for ($i = 0; $i &lt; $total; $i += 5)吗?
  • @Jorg 将其放入答案中,以便我接受。不敢相信我没想到。太棒了。
  • @TomasoAlbinoni 是的,考虑过但我需要操纵所有对象,无论它们是否匹配。最好在循环本身内分开。

标签: php css regex


【解决方案1】:

我想你也可以这样做。

for ($i = 0; $i < $total; $i+=5) {
{
   // is 0, 5, 10,
   // etc
   array[ $i ] = "whatever05";

   for ($j = 1; $j < 5; $j++ )
   {
        // 1, 2, 3, 4,
        // 6, 7, 8, 9,
        // etc

        if ( ($i + $j) >= $total )
            break;
        array[ $i + $j ] = "whatever12346789";
   }
}

【讨论】:

    【解决方案2】:

    正则表达式绝对不适合这项工作。虽然如果你真的想要,/[05]$/ 会这样做。

    改用$rhythm = $i % 5 == 0;。您可以将 0 更改为另一个数字 (1-4) 以执行条件的 +1 部分。

    【讨论】:

      猜你喜欢
      • 2012-04-23
      • 1970-01-01
      • 2016-08-08
      • 2013-03-10
      • 2013-10-28
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多