【问题标题】:Exploding a string multiple times then Imploding it多次爆炸字符串然后将其内爆
【发布时间】:2014-08-23 16:17:18
【问题描述】:

我一直在尝试使字符串爆炸两次然后将其内爆。 这就是我所说的两次爆炸的意思。 所以我有一个字符串

:0,0,1,0,0:0,0,0,0,0:

我想编辑第三个零并将其更改为一。 我怎么做? 我尝试过炸开:,然后炸开,,然后我知道如何内爆它。

我已经尝试过这段代码,但我无法内爆:

$exploding = ':0,0,0,1,0,0:0,0,0,0,0:';
        $explode = explode(':', $exploding);
        $explodes = explode(',', $explode[1]);
        $explodes[$part] = $type;
        $explodes = implode(',', $explodes);

【问题讨论】:

标签: php explode implode


【解决方案1】:

我添加了另一个专门回答所提问题的答案,但我是否可以建议一种更可扩展至更复杂问题的不同方法? PHP 允许您将字符串作为数组访问,索引是字符串中字符的从零开始的位置。

代码:

$string = ':sd0,2[wsdsjds0sdfs0ksdjse00df0';
echo $string.'<br />';

$zeroCounter = 0;

for ($i=0;$i<strlen($string);$i++) {


    if ($string[$i] === '0') {

        $zeroCounter += 1;

        if ($zeroCounter === 3) {
            $string[$i] = '1';
            break;
        }

    }

}

echo $string;

输出:

:sd0,2[wsdsjds0sdfs**0**ksdjse00df0
:sd0,2[wsdsjds0sdfs**1**ksdjse00df0

如果您有任何问题,请告诉我!

【讨论】:

    【解决方案2】:

    $part 和 $type 在此示例中未定义,但此代码应将此特定字符串的第三个 0 更改为 1:

    $exploding = ':0,0,0,1,0,0:0,0,0,0,0:';
        $explode = explode(':', $exploding);
        $explodes = explode(',', $explode[1]);
        $explodes[2] = '1';
        $explodes = implode(',', $explodes);
    

    这似乎有点奇怪,所以我不确定您是否只是想弄清楚爆炸是如何工作的,或者您是否想要一些适用于不同字符串的东西。

    查看我的其他解决方案,了解解决这些问题的更好方法。

    【讨论】:

      【解决方案3】:
      // Explode on :
      $array = explode(':', $string);
      // Now explode each on ,
      foreach ($array as &$substring) {
          $substring = explode(',', $substring);
      }
      // Change third 0 to 1
      $array[1][3] = '1';
      // Now implode on ,
      foreach ($array as &$substring) {
          $substring = implode(',', $substring);
      }
      // Now implode on :
      $new_string = implode(':', $array);
      

      foreach 循环中的引用变量允许您就地更新数组元素。

      DEMO

      类似于您尝试的更简单的版本是:

      $exploding = ':0,0,0,1,0,0:0,0,0,0,0:';
      $explode = explode(':', $exploding);
      $explodes = explode(',', $explode[1]);
      $explodes[$part] = $type;
      $explode[1] = implode(',', $explodes);
      $exploding = implode(':', $explode);
      

      DEMO

      【讨论】:

      • 不是将其设为 1,而是将其设为 01,并删除了它后面的逗号。
      【解决方案4】:

      您的代码正确但不完整,这对我有用:

      $part = 3;
      $type = 1;
      $exploding = ':0,0,1,0,0,0:0,0,0,0,0:';
      $explode = explode(':', $exploding);
      $explode[1] = explode(',', $explode[1]);
      $explode[1][$part] = $type;
      $explode[1] = implode(',', $explode[1]);
      $explode = implode(':', $explode);
      print $exploding;
      print "<br/>";
      print $explode;
      

      输出:

      :0,0,1,0,0,0:0,0,0,0,0:
      :0,0,1,1,0,0:0,0,0,0,0:
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-17
        • 1970-01-01
        • 1970-01-01
        • 2011-09-04
        • 2020-12-10
        相关资源
        最近更新 更多