Php 按设定值自动递增的数组值(例如,如果第一个是echo$myarray[5];下一个是echo$myarray[5+;5];那么实际上是$myarray[10];)

Php 按设定值自动递增的数组值(例如,如果第一个是echo$myarray[5];下一个是echo$myarray[5+;5];那么实际上是$myarray[10];),php,arrays,auto-increment,Php,Arrays,Auto Increment,有一个这样的数组 Array ( [1] => Array ( [0] => Order Number [1] => Item 1 Colour [2] => Buyer Name [3] => Item 1 Name [4] => Item 1 Variation ) [2] => A

有一个这样的数组

Array
(
    [1] => Array
        (
            [0] => Order Number
            [1] => Item 1 Colour
            [2] => Buyer Name
            [3] => Item 1 Name
            [4] => Item 1 Variation
        )

    [2] => Array
        (
            [0] => Order Number
            [1] => Item 1 Colour
            [2] => Buyer Name
            [3] => Item 1 Name
            [4] => Item 1 Variation
            [5] => Order Number
            [6] => Item 2 Colour
            [7] => Buyer Name
            [8] => Item 2 Name
            [9] => Item 2 Variation

        )

    [3] => Array
        (
            [0] => Order Number
            [1] => Item 1 Colour
            [2] => Buyer Name
            [3] => Item 1 Name
            [4] => Item 1 Variation
            [5] => Order Number
            [6] => Item 2 Colour
            [7] => Buyer Name
            [8] => Item 2 Name
            [9] => Item 2 Variation
            [10] => Order Number
            [11] => Item 3 Colour
            [12] => Buyer Name
            [13] => Item 3 Name
            [14] => Item 3 Variation

        )
}
这显示了3个虚拟订单,在本例中,第一个订单有1个项目,第二个订单有2个项目,第三个订单有3个项目。正如您所看到的,添加的项目越多,该项目的数组就越长,并且数量总是在一组块中增加。即,上述示例中顺序为2的项目1的标题为[3],而项目2的标题为[8](与之前相同,加上5) 然后,按照例3的顺序,它的[3]、[8]&[13],因此基本上总是从上一个数字ref加上5

那么,有没有一种方法可以回显一个值加上上上一个值的5,并继续这样做呢


下面是一个快速示例,说明如何以更有用的方式构建阵列。如注释中所述,我们创建了一个主订单数组。在该数组中,每个订单都有一个条目。每个订单也是一个数组,包含订单的详细信息以及项目。这些项包含在一个数组中,每个项都作为数组中的一个条目。每个项本身也是一个数组,条目是项的详细信息

$orders = array(
    array(
        "orderNum" => 123,
        "buyerId" => 111,
        "items" => array(
            array(
                "id" => 321,
                "name" => "Item One",
                "color" => "red"
            )
        )
    ),
    array(
        "orderNum" => 456,
        "buyerId" => 444,
        "items" => array(
            array(
                "id" => 321,
                "name" => "Item One",
                "color" => "red"
            ),
            array(
                "id" => 356,
                "name" => "Item Two",
                "color" => "green"
            )
        )
    ),
    array(
        "orderNum" => 789,
        "buyerId" => 765,
        "items" => array(
            array(
                "id" => 321,
                "name" => "Item One",
                "color" => "red"
            ),
            array(
                "id" => 356,
                "name" => "Item Two",
                "color" => "green"
            ),
            array(
                "id" => 999,
                "name" => "Item Three",
                "color" => "blue"
            )
        )
    )
);
下面是一个如何访问订单和项目的快速示例

foreach($orders as $order)
{
    echo "Order number: " . $order["orderNum"] . "\r\n";

    foreach($order["items"] as $item)
    {
        echo "Item Name: " . $item["name"] . "\r\n";
    }
    echo "\r\n";
}

下面是一个快速示例,说明如何以更有用的方式构建阵列。如注释中所述,我们创建了一个主订单数组。在该数组中,每个订单都有一个条目。每个订单也是一个数组,包含订单的详细信息以及项目。这些项包含在一个数组中,每个项都作为数组中的一个条目。每个项本身也是一个数组,条目是项的详细信息

$orders = array(
    array(
        "orderNum" => 123,
        "buyerId" => 111,
        "items" => array(
            array(
                "id" => 321,
                "name" => "Item One",
                "color" => "red"
            )
        )
    ),
    array(
        "orderNum" => 456,
        "buyerId" => 444,
        "items" => array(
            array(
                "id" => 321,
                "name" => "Item One",
                "color" => "red"
            ),
            array(
                "id" => 356,
                "name" => "Item Two",
                "color" => "green"
            )
        )
    ),
    array(
        "orderNum" => 789,
        "buyerId" => 765,
        "items" => array(
            array(
                "id" => 321,
                "name" => "Item One",
                "color" => "red"
            ),
            array(
                "id" => 356,
                "name" => "Item Two",
                "color" => "green"
            ),
            array(
                "id" => 999,
                "name" => "Item Three",
                "color" => "blue"
            )
        )
    )
);
下面是一个如何访问订单和项目的快速示例

foreach($orders as $order)
{
    echo "Order number: " . $order["orderNum"] . "\r\n";

    foreach($order["items"] as $item)
    {
        echo "Item Name: " . $item["name"] . "\r\n";
    }
    echo "\r\n";
}

似乎您最好重新设计该数组以容纳一个项目数组。这样你就有了不必要的重复(我假设在一个数组中所有的订单ID都是相同的,以及买家的名字)+迭代项目会容易得多。我会花时间思考如何从一开始就更好地构造数据。就像让每个订单都由一个顶层带有订单特定细节的数组组成,然后是一个“项目”子数组,它是订单中所有项目的数组,其中每个项目也是项目细节的数组。不要因为还必须重构引用数据集的代码而推迟重构数据集。您将来可能需要开发的任何附加功能都将变得更加复杂(就像现在这样)。访问数据应该永远不会这么复杂。听起来你需要重新开始。你以后会感谢你自己的。你现在所拥有的会给你带来更多的挫折,而不是花时间去做正确的事情。否则,你可能会回到这里问另一个问题,关于如何对一个构造糟糕的数组进行完全任意的操作。整个想法是,如果你这样做,你将根本无法访问任意的数字索引。相反,您将在一个订单数组上循环,每个订单数组包含(除了订单详细信息)一个项目数组,每个项目数组包含项目详细信息。您确实知道关联数组,对吗?似乎您最好重新设计该数组以容纳一个项目数组。这样你就有了不必要的重复(我假设在一个数组中所有的订单ID都是相同的,以及买家的名字)+迭代项目会容易得多。我会花时间思考如何从一开始就更好地构造数据。就像让每个订单都由一个顶层带有订单特定细节的数组组成,然后是一个“项目”子数组,它是订单中所有项目的数组,其中每个项目也是项目细节的数组。不要因为还必须重构引用数据集的代码而推迟重构数据集。您将来可能需要开发的任何附加功能都将变得更加复杂(就像现在这样)。访问数据应该永远不会这么复杂。听起来你需要重新开始。你以后会感谢你自己的。你现在所拥有的会给你带来更多的挫折,而不是花时间去做正确的事情。否则,你可能会回到这里问另一个问题,关于如何对一个构造糟糕的数组进行完全任意的操作。整个想法是,如果你这样做,你将根本无法访问任意的数字索引。相反,您将在一个订单数组上循环,每个订单数组包含(除了订单详细信息)一个项目数组,每个项目数组包含项目详细信息。你确实知道关联数组,对吧?公平地说,我对PHP完全是个业余爱好者,到目前为止,通过大量的阅读、尝试和错误(以及这里的一些问题),我得到了一些半可用的东西(在我的服务器上为我自己私下提供的东西),这让我感到惊讶但所有内容都是硬引用的,我到处使用@$而不是if语句(当一个值为空时用于抑制错误)我逐渐意识到我所采取的方法只是“让它按我所希望的方式工作,无论什么工作都可以”方法,这一切都需要重写,因为在过去的几周/几个月里我真的学到了很多。所以,回到空白的画布上,反思可能是我付诸实践的最好方法。谢谢你的建议,提示和示例代码,我相信我会很快回来寻求帮助!公平地说,老实说,我对PHP完全是个业余爱好者,到目前为止,通过大量的阅读、尝试和错误(以及这里的一些问题),我已经惊讶于自己得到了一个半可用的东西(在我的服务器上为我自己私自使用),但所有的东西都很难被引用