首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数组循环到另一个数组,考虑所有可能性

问将数组循环到另一个数组,考虑所有可能性
EN

Stack Overflow用户
提问于 2020-08-02 21:02:37
回答 1查看 27关注 0票数 0

我想做的是..。

我有一个名为char的数组和一个字符串

代码语言:javascript
复制
$char = array("-","_","|","+","~");
$MyString = "this is test string";

我想做的是用数组中的一个字符替换$MyString中的每个空格

但我希望结果是这样

​

​

代码语言:javascript
复制
$MyString = "this is test string";
$ExplodedString = explode(" ",$MyString);

foreach ($char as $sinchar) {
        $text1 = preg_replace("/ /", $sinchar, $MyString ,1);
       foreach ($char as $sinchar) {
        $text2 = preg_replace("/ /", $sinchar, $text1 ,1);
        //echo $text2."\n";
            foreach ($char as $sinchar) {
                $text3 = preg_replace("/ /", $sinchar, $text2 ,1);
                echo $text3."\n";
            }
       }
}

这段代码对我来说很好,但是它是静态代码,我正在寻找更动态的代码,所以如果我添加了一个有更多空格的文本,我就不必再添加一个循环了。

伙计们有什么解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-02 21:36:52

您可以使用递归函数,将第一个单词的排列与其余单词的所有可能的排列组合起来:

代码语言:javascript
复制
function computeAllPermutations(array $words, array $separators): array
{
  switch (count($words)) {
    case 0:
      return [];
    case 1:
      return [$words[0]];
    default:
      $permutations = [];
      foreach (computeAllPermutations(array_slice($words, 1), $separators) as $subPermutation) {
        foreach ($separators as $separator) {
          $permutations[] = $words[0] . $separator . $subPermutation;
        }
      }
      return $permutations;
  }
}

用法:

代码语言:javascript
复制
$words = preg_split('/\h+/', $MyString);
$permutations = computeAllPermutations($words, $char);
print_r($permutations);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63220990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档