PHP中多行文本框如何转换成二维数组? 有多个文本框,每个文本框有三行,每行有三个元素(相当于一个3*3矩阵),请问如何将矩阵转换成二维数组?能否给个代码?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 全部文本框用同一格式命名<input type=text name='t[]'>提交后$ip = array_chunk($_POST['t'], 3);$ip就是你要的数组当你需要每行4列的时候就$ip = array_chunk($_POST['t'], 4); $text = "1.0 2.0 3.04.0 5.0 6.07.0 8.0 9.0";$data = array();foreach (explode("\n", $text) as $row) { $data[] = explode(" ", $row);}echo '<pre>';print_r($data); PHP 会自动转换,也可以用 doubleval('1.2'); yctin,您的方法我试了好像不行啊。能否再帮帮忙? 第一行的name data[0][] data[0][] data[0][]第二行的name data[1][] data[1][] data[1][]类推。后台的值。$_POST['data']的结构=根数组(子数组1,子数组2,子数组3) <pre><?phpif(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> 我怎么发不来代码啊<pre><?phpif(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> 原来是这个要求<?phpfunction 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.04.0 5.0 6.07.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 )) 太有意思啦问问题的问得不清不楚回答的回答得丰富多彩 (__) /oo\\________ \ / \---\ \/ / \ \ \\_|___\\_|/ * || YY| || || scshsy的方法固然可行,但是每个元素占用一个文本域。能否将所有的元素都放在一个文本域内?大家看看下面的例子就知道了。http://www.bluebit.gr/matrix-calculator/matrix_multiplication.aspx 这样写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> 小数位数:<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; 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:<?phpfunction 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;?> xuzuning大虾的回答比较接近目标,可惜我运行时不成功,是不是代码有哪儿还有问题?chinmo大虾的回答也很好,但是若能做在一个文件里就更好了。再次感谢大家伙儿,你们真是好心人,这里的讨论氛围也非常好。相信有很多和我一样的新手都从中获得很多营养。最好烦请大家帮我完善一下,做一个能运行的简单一点的php网页就行了。再次感谢!我会将分数提到100分的。 这段代码应该怎样用循环函数实现?? 请推荐一款能在PHP下使用的在线编辑器 PHP+MySQL的不能插入和修改中文的问题 大家看下我这样分区可以吗 php实现嵌入iframe监控内容变化 在线等,如何动态选择数据库表中的列???? 100分,急且简单:关于数组的元素个数的取得! fopen无法正确创建新文件 discuz做企业站行吗? 关于page类中的无刷新分页中调用自定义函数是怎么做到的 关于学习PHP的问题? php中$_session['userid']的问题
<input type=text name='t[]'>提交后
$ip = array_chunk($_POST['t'], 3);$ip就是你要的数组
当你需要每行4列的时候就
$ip = array_chunk($_POST['t'], 4);
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);
PHP 会自动转换,也可以用 doubleval('1.2');
第二行的name data[1][] data[1][] data[1][]
类推。
后台的值。$_POST['data']的结构=根数组(子数组1,子数组2,子数组3)
<?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>
<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>
<?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
))
问问题的问得不清不楚
回答的回答得丰富多彩 (__)
/oo\\________
\ / \---\
\/ / \ \
\\_|___\\_|/ *
|| YY|
|| ||
大家看看下面的例子就知道了。
http://www.bluebit.gr/matrix-calculator/matrix_multiplication.aspx
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> 小数位数:<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;
<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;
?>
chinmo大虾的回答也很好,但是若能做在一个文件里就更好了。
再次感谢大家伙儿,你们真是好心人,这里的讨论氛围也非常好。相信有很多和我一样的新手都从中获得很多营养。
最好烦请大家帮我完善一下,做一个能运行的简单一点的php网页就行了。再次感谢!我会将分数提到100分的。