亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

考慮每種可能性將數組循環到另一個數組

考慮每種可能性將數組循環到另一個數組

PHP
慕村225694 2023-09-08 22:05:54
我想做的是......我有一個名為 char 的數組和一個字符串$char = array("-","_","|","+","~"); $MyString = "this is test string";我想做的是用數組中的一個字符替換 $MyString 中的每個空格但我希望結果是這樣的$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";            }       }}這段代碼對我來說工作得很好,但它是一個靜態代碼,我正在尋找更動態的東西,所以如果我添加一個具有更多空格的文本,我不必添加另一個循環。那么大家有什么解決辦法嗎?
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

您可以使用遞歸函數,將第一個單詞的排列與其余單詞的所有可能排列組合起來:


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;

  }

}

用法:


$words = preg_split('/\h+/', $MyString);

$permutations = computeAllPermutations($words, $char);

print_r($permutations);

演示


查看完整回答
反對 回復 2023-09-08
  • 1 回答
  • 0 關注
  • 117 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號