5

我不确定是否有某种 php 函数可以帮助我相当简单地做到这一点。我想我会问的。

假设我有 5 个产品 [prod1, prod2, prod3, prod4, prod5]

所有这些产品都是相互关联的,所以我需要得出这样的结论:

prod1, prod2, prod3, prod4, prod5

prod2, prod3, prod4, prod5, prod1

prod3, prod4, prod5, prod1, prod2

prod4, prod5, prod1, prod2, prod3

prod5, prod1, prod2, prod3, prod4

echo,另存为变量,对我来说无所谓。

在我的示例中,我说的是 5,但实际上可能有任意数量的产品。是否有自动执行此操作的功能n?我什至不知道该怎么称呼它,然后我将它们匹配在一起。

4

4 回答 4

8

你可以这样做:

$arr = array($prod1, $prod2, $prod3, $prod4, $prod5);

for ($i = 0; $i < count($arr); $i++) {
    array_push($arr, array_shift($arr));
    print_r($arr);
}
于 2013-08-01T21:51:01.087 回答
0

另一种解决方案:

$array = array('$prod1', '$prod2', '$prod3', '$prod4', '$prod5');

$result  = array();
for ($i = 0; $i < count($array); $i++) {
    $result[] = array_merge( array_slice($array, $i), array_slice($array, 0, $i)  );
}
print_r($result);

输出:

Array
(
    [0] => Array
        (
            [0] => $prod1
            [1] => $prod2
            [2] => $prod3
            [3] => $prod4
            [4] => $prod5
        )

    [1] => Array
        (
            [0] => $prod2
            [1] => $prod3
            [2] => $prod4
            [3] => $prod5
            [4] => $prod1
        )

    [2] => Array
        (
            [0] => $prod3
            [1] => $prod4
            [2] => $prod5
            [3] => $prod1
            [4] => $prod2
        )

    [3] => Array
        (
            [0] => $prod4
            [1] => $prod5
            [2] => $prod1
            [3] => $prod2
            [4] => $prod3
        )

    [4] => Array
        (
            [0] => $prod5
            [1] => $prod1
            [2] => $prod2
            [3] => $prod3
            [4] => $prod4
        )

)
于 2013-08-01T22:44:47.033 回答
0

不确定我完全理解你想要什么,但考虑到你的原始数据是一个字符串,你可以简单地调用 'explode' (http://php.net/manual/en/function.explode.php)或类似的来打开它成一个数组。

于 2013-08-01T21:51:54.407 回答
0

尝试这个:

    $products = array();
    $line= array("prod1", "prod2", "prod3", "prod4", "prod5");
    array_push($products , $line);
    print_r($products);
于 2013-08-01T21:53:21.363 回答