有多个文本框,每个文本框有三行,每行有三个元素(相当于一个3*3矩阵),请问如何将矩阵转换成二维数组?能否给个代码?谢谢!

解决方案 »

  1.   

    全部文本框用同一格式命名
    <input type=text name='t[]'>提交后
    $ip = array_chunk($_POST['t'], 3);$ip就是你要的数组
    当你需要每行4列的时候就
    $ip = array_chunk($_POST['t'], 4);
      

  2.   

    $text = "1.0 2.0 3.0
    4.0 5.0 6.0
    7.0 8.0 9.0";
    $data = array();
    foreach (explode("\n", $text) as $row) {
    $data[] = explode(" ", $row);
    }
    echo '<pre>';
    print_r($data);
      

  3.   


    PHP 会自动转换,也可以用 doubleval('1.2');
      

  4.   

    yctin,您的方法我试了好像不行啊。能否再帮帮忙?
      

  5.   

    第一行的name  data[0][]  data[0][]  data[0][]
    第二行的name  data[1][]  data[1][]  data[1][]

    类推。
    后台的值。$_POST['data']的结构=根数组(子数组1,子数组2,子数组3)
      

  6.   

    <pre>
    <?php
    if(isset($_POST['data'])){
    print_r($_POST['data']) ;
    }
    ?>
    </pre><form action="" method="post"><input type="text" name="data[0][]" />
    <input type="text" name="data[0][]" />
    <input type="text" name="data[0][]" />
    <br />
    <input type="text" name="data[1][]" />
    <input type="text" name="data[1][]" />
    <input type="text" name="data[1][]" />
    <br />
    <input type="text" name="data[2][]" />
    <input type="text" name="data[2][]" />
    <input type="text" name="data[2][]" /><input type="submit" name="button" id="button" value="提交" />
    </form>
      

  7.   

    我怎么发不来代码啊
    <pre>
    <?php
    if(isset($_POST['data'])){
    print_r($_POST['data']) ;
    }
    ?>
    </pre><form action="" method="post"><input type="text" name="data[0][]" />
    <input type="text" name="data[0][]" />
    <input type="text" name="data[0][]" />
    <br />
    <input type="text" name="data[1][]" />
    <input type="text" name="data[1][]" />
    <input type="text" name="data[1][]" />
    <br />
    <input type="text" name="data[2][]" />
    <input type="text" name="data[2][]" />
    <input type="text" name="data[2][]" /><input type="submit" name="button" id="button" value="提交" />
    </form>
      

  8.   

    原来是这个要求
    <?php
    function foo($v) {
      return split(' +', $v);
    }
    if($_POST) {
      $d1 = array_map('foo', split(" *[\r\n]+", trim($_POST['d1'])));
    }
    print_r($d1);
    ?>
    <form method=post>
    <textarea name=d1>1.0 2.0 3.0
    4.0 5.0 6.0
    7.0 8.0 9.0
    </textarea>
    <br>
    <input type=submit value=test>
    </form>
    Array
    (
        [0] => Array
            (
                [0] => 1.0
                [1] => 2.0
                [2] => 3.0
            )    [1] => Array
            (
                [0] => 4.0
                [1] => 5.0
                [2] => 6.0
            )    [2] => Array
            (
                [0] => 7.0
                [1] => 8.0
                [2] => 9.0
            ))
      

  9.   

    太有意思啦
    问问题的问得不清不楚
    回答的回答得丰富多彩   (__) 
      /oo\\________
      \ /     \---\
       \/    /  \  \
        \\_|___\\_|/  *
          ||  YY|  
          ||  ||   
      

  10.   

    scshsy的方法固然可行,但是每个元素占用一个文本域。能否将所有的元素都放在一个文本域内?
    大家看看下面的例子就知道了。
    http://www.bluebit.gr/matrix-calculator/matrix_multiplication.aspx
      

  11.   

    这样写
    function colsplit($v) {
      return split(chr($_POST['delimiter'])." *", $v);
    }
    function coljoin($v) {
      return join(chr($_POST['delimiter']), $v);
    }$ret = '请输入正确数据';if($_POST) {
      $a = array_map('colsplit', split("[\r\n]+", $_POST['matrixA']));
      $b = array_map('colsplit', split("[\r\n]+", $_POST['matrixB']));
      if($a && $b) {
        $fmt = "%.$_POST[decimals]f";
        for($i=0;$i<count($a);$i++) {
          for($j=0;$j<count($b[0]);$j++) {
            $p = 0;
            for($k=0;$k<count($a[0]);$k++)
               $p += $a[$i][$k] * $b[$k][$j];
            $c[$i][$j] = sprintf($fmt, $p);
          }
        }
        $ret = join("\r\n",array_map('coljoin', $c));
      }
    }echo <<< HTML
    <form method="post">
    <table>
    <tr>
    <td>矩阵A:</td>
    <td>矩阵B:</td>
    <td>结果</td>
    </tr>
    <tr>
    <td><textarea name="matrixA" rows="14" cols="42">$_POST[matrixA]</textarea>
    </td>
    <td><textarea name="matrixB" rows="14" cols="42">$_POST[matrixB]</textarea>
    </td>
    <td><textarea name="matrixC" rows="14" cols="42">$ret</textarea>
    </td>
    </tr>
    </table>
    <br>
    分隔符:<select size="1" name="delimiter">
    <option value="32">空格</option>
    <option value="9">Tabs</option>
    <option value="44" selected>逗号</option>
    </select>&nbsp; 小数位数:<select size="1" name="decimals">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3" selected>3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="9">9</option>
    <option value="12">12</option>
    <option value="15">15</option>
    </select>
    <br>
    <hr>
    <input type="submit" value="Multiply A*B" name="GO" title="Multiply">
    <br>
    <hr>
    </form>
    HTML;
      

  12.   

    13楼的已经是给你答案了吧运用例子:test.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <script language="JavaScript">
    <!--
    var xmlHttp = false; 
    try

    xmlHttp = new XMLHttpRequest(); 
    }
    catch (trymicrosoft)
    {
    try
      {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (othermicrosoft) 
    {
    try
    {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    }
    catch (failed)
    {
    xmlHttp = false;
    }
    }
    }
    if (!xmlHttp){ 
     alert("Error initializing XMLHttpRequest!");} 
    function GetResult(value){
    if(value){
    var value=value.replace(/[\r\n]+/g,"@")
    var url="showinfo.php?infovalue="+value;
    var linkurl=url;//根据传递过来的变量后台查询
    xmlHttp.open("GET",linkurl,true);
    xmlHttp.onreadystatechange = callback;//触发callback事件,以判断信息是否正确
    xmlHttp.send(null);
    }
    }
    function callback() { if (xmlHttp.readyState == 4) {
    if (xmlHttp.status == 200) {
    document.getElementById("showinfo").value=xmlHttp.responseText;//把返回的信息赋给ID为showinfo的DIV
    }
    }
    }
    //-->
    </SCRIPT>
    </head><body>
    <table>
    <tr>
    <td>矩阵A:</td>
    <td>结果</td>
    </tr>
    <tr>
    <td><textarea name="matrixA" rows="14" cols="42" onblur="GetResult(this.value)"></textarea>
    </td>
    <td><textarea name="matrixB" rows="14" cols="42" id="showinfo"></textarea>
    </td>
    </tr>
    </table>
    </body>
    </html>
    showinfo.php:<?php
    function foo($v) {
      return split(' +', $v);
    }
    if($_GET['infovalue']) {
      $arr = array_map('foo', split("@", trim($_GET['infovalue'])));
    }
    $result=0;
    foreach($arr as $key=>$value){
    foreach($value as $key=>$svalue){
    $result=$result+$svalue;
    }
    }
    echo $result;
    ?>
      

  13.   

    xuzuning大虾的回答比较接近目标,可惜我运行时不成功,是不是代码有哪儿还有问题?
    chinmo大虾的回答也很好,但是若能做在一个文件里就更好了。
    再次感谢大家伙儿,你们真是好心人,这里的讨论氛围也非常好。相信有很多和我一样的新手都从中获得很多营养。
    最好烦请大家帮我完善一下,做一个能运行的简单一点的php网页就行了。再次感谢!我会将分数提到100分的。