gpt4 book ai didi

php - 获取数组元素的所有有序、连续组合

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:08:35 25 4
gpt4 key购买 nike

我想得到一个句子中所有可能的短语(实际上存在)

$str = 'word1 word2 word3 word4';

$output = array ('word1 word2 word3', 'word1 word2',
'word2 word3 word4', 'word3 word4', 'word2 word3');

为此,我创建了一个单词数组,

$words = explode(' ', $str);

这里有几个问题解释了如何构建数组元素的所有组合,但是如何在保留原始顺序的情况下进行所有组合?

如何从 $words 中生成 $output 数组?

最佳答案

  • 我们可以使用array_slice()函数从输入数组中取出一个 block 。它还将确保保持顺序,以及连续值的组合(根据原始数组)。
  • 现在,我们需要使用两个嵌套循环来确定 block 的 $offset$length
  • $offset 值基本上会从头到尾循环; $length 最初将是偏移量剩余值的计数,并且它将递减到 2(我们不希望单个值作为组合)。

尝试以下操作 ( Rextester DEMO ):

$str = 'word1 word2 word3 word4';
$words = explode(' ', $str);

$combinations = array();

// offset from start to end of the words
for($offset = 0; $offset < count($words); $offset++) {

// length from available remaining words to 2
for ($length = count($words) - $offset; $length > 1; $length--) {

// get the array chunk
$combinations[] = array_slice($words, $offset, $length);
}
}

// test output
print_r($combinations);

输出:

Array
(
[0] => Array
(
[0] => word1
[1] => word2
[2] => word3
[3] => word4
)

[1] => Array
(
[0] => word1
[1] => word2
[2] => word3
)

[2] => Array
(
[0] => word1
[1] => word2
)

[3] => Array
(
[0] => word2
[1] => word3
[2] => word4
)

[4] => Array
(
[0] => word2
[1] => word3
)

[5] => Array
(
[0] => word3
[1] => word4
)

)

关于php - 获取数组元素的所有有序、连续组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53144175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com