Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中javascript数组的迭代_Javascript_Php_Arrays - Fatal编程技术网

PHP中javascript数组的迭代

PHP中javascript数组的迭代,javascript,php,arrays,Javascript,Php,Arrays,我有一个Javascript数组和一个块列表。这个数组可能会改变他的长度。我必须从PHP访问它,因为我必须在数据库中执行一些操作。问题是此阵列的长度可能会改变。代码如下: <html> <head> </head> <body> <script type='text/javascript'> var blocks = [ { w: 500, h: 600 }, { w: 300, h: 200 }, { w:

我有一个Javascript数组和一个块列表。这个数组可能会改变他的长度。我必须从PHP访问它,因为我必须在数据库中执行一些操作。问题是此阵列的长度可能会改变。代码如下:

<html>
<head>
</head>
<body>
<script type='text/javascript'>
  var blocks = [
    { w: 500, h: 600 },
    { w: 300, h: 200 },
    { w: 150, h: 150 },
    { w: 150, h: 150 },
    { w: 200, h: 250 },
    { w: 100, h: 250 }
  ];

  order_blocks(blocks); //blocks are ordered and can be added new blocks

  //Next code is only to test
  for(var n = 0 ; n < blocks.length ; n++) {
    var block = blocks[n];
    if (block.fit) {
        var str1 = "Block " + (n+1) + ": (" + block.w + "," + block.h + ")";
        document.write(str1);
    }
  }
</script>
<?php
    if (!isset($_POST[numblocks]))
    {
        echo '<form action="'.$_SERVER[PHP_SELF].'" method=post name=pass>
                    <input type=hidden name=numblocks>
                    <input type=hidden name=block1_w>
                    <input type=hidden name=block1_h>
            </form>';
        echo '<script languaje="JavaScript">
                    document.pass.numblocks.value=blocks.length;
                    document.pass.block1_w.value=blocks[0].w;
                    document.pass.block1_h.value=blocks[0].h;
                    document.pass.submit();
            </script>';   
    }     
    echo '<br><br>There are '.$_POST["numblocks"].' Blocks<br>';
    echo 'Block 1 ('.$_POST["block1_w"].','.$_POST["block1_h"].')<br>';
?>
</body>
</html>

变量块=[
{w:500,h:600},
{w:300,h:200},
{w:150,h:150},
{w:150,h:150},
{w:200,h:250},
{w:100,h:250}
];
顺序块(块)//块已排序,可以添加新块
//下一个代码只是测试
对于(var n=0;n
这个过程是:

  • Javascript:我创建数组块并应用order_块
  • PHP:我用POST方法传递Javascript变量
  • 在代码中,您可以看到我正确地传递了数组的第一个元素,但我应该在数组中迭代执行此操作。

    替换此:

    echo '<form action="'.$_SERVER[PHP_SELF].'" method=post name=pass>
                    <input type=hidden name=numblocks>
                    <input type=hidden name=block1_w>
                    <input type=hidden name=block1_h>
            </form>';
    echo '<script languaje="JavaScript">
                    document.pass.numblocks.value=blocks.length;
                    document.pass.block1_w.value=blocks[0].w;
                    document.pass.block1_h.value=blocks[0].h;
                    document.pass.submit();
            </script>';   
    
    echo'
    ';
    回声'
    document.pass.numblocks.value=blocks.length;
    document.pass.block1_w.value=blocks[0].w;
    document.pass.block1_h.value=blocks[0].h;
    document.pass.submit();
    ';   
    
    有了这个(应该有用):

    echo'
    ';
    回声'
    对于(变量i=0;i
    我看不到任何PHP代码(至少尝试“在数组上迭代”。请更正djot。我不知道如何在php块中迭代数组。对不起,如果我表达得不好,我能帮你吗?是的,它可以帮助我,但我的问题是,在第一个过程中,我不知道我必须进行多少次迭代,因为我不知道数组的长度。谢谢mansoulx,但它不允许我制作分配文档。pass.block1_w[I]。value=blocks[I].w;
    echo '<form action="'.$_SERVER[PHP_SELF].'" method=post name=pass>
                    <input type=hidden name="numblocks">
                    <input type=hidden name="block1_w[]">
                    <input type=hidden name="block1_h[]">
            </form>';
    echo '<script language="text/javascript">
                for(var i = 0; i < blocks.length; i++) {
                    document.pass.numblocks.value=blocks.length;
                    document.pass.block1_w[i].value=blocks[i].w;
                    document.pass.block1_h[i].value=blocks[i].h;
    
                }
            </script>';