|
查看: 1024|回复: 19
|
求高手帮帮忙 php
[复制链接]
|
|
|
5 5 5 5 5 5 5 5 5
5 4 4 4 4 4 4 4 5
5 4 3 3 3 3 3 4 5
5 4 3 2 2 2 3 4 5
5 4 3 2 1 2 3 4 5
5 4 3 2 2 2 3 4 5
5 4 3 3 3 3 3 4 5
5 4 4 4 4 4 4 4 5
5 5 5 5 5 5 5 5 5
我要做出类似 这样的东西
谁会用 for + array 做出呢?
我做了一个星期 还是不会 |
|
|
|
|
|
|
|
|
|
|
发表于 15-10-2008 12:43 PM
|
显示全部楼层
回复 1# ~天使泪~ 的帖子
就很简单的判断,希望对你有帮助。
<?
$number = array(5, 4, 3, 2, 1);
for($row = 1; $row <= 9; $row++)
{
for($col = 1; $col <= 9; $col++)
{
if($row == 1 || $row == 9 || $col == 1 || $col == 9) echo $number[0];
elseif($row == 2 || $row == 8 || $col == 2 || $col == 8) echo $number[1];
elseif($row == 3 || $row == 7 || $col == 3 || $col == 7) echo $number[2];
elseif($row == 4 || $row == 6 || $col == 4 || $col == 6) echo $number[3];
else echo $number[4];
}
echo "<br>";
}
?> |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 16-10-2008 01:53 AM
|
显示全部楼层
谢谢 如果我用form post 资料 过去 让他转变呢?
我的array 很烂
<html>
<head>
<meta http-equiv="content-type" c>
<title>No title</title>
<meta name="generator" c>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<form method="post" action="">
<p><input type="text" name="run">
<p><input type="submit" value ="submit" name="submit"></p>
</form>
<p> </p>
</body>
</html>
<?php
$run = $_REQUEST{"run"};
$table=($run*2-2);
echo "<table border=1>";
for($bta=0;$bta<=$table;$bta++){
$array[ ]= $bta;
}
for($a=0;$a<=$table;$a++){
echo "<tr>";
for($b=0;$b<=$table;$b++){
echo "<td>";
if($a<=$b) {
echo $array[$b] ;
}
else
{
echo $array[$a] ;
}
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
?>
过后出的东西是
但是我还是不会用array 来算数
请高手帮忙下。
[ 本帖最后由 ~天使泪~ 于 17-10-2008 12:32 AM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 18-10-2008 12:17 AM
|
显示全部楼层
原帖由 皇帝陛下的玉米 于 15-10-2008 12:43 PM 发表 
就很简单的判断,希望对你有帮助。
这个好像没有解决问题
试下我的方法,用Javascript 写的,自己转换去 PHP
- <html>
- <body>
- <div id="DIVoutput">
- </div>
- </body>
- </html>
- <script language = "javascript">
- var base = 5;
- var i,j;
- var arr = new Array();
- arr[0] = 0;
- arr[1] = 1;
- arr[2] = 2;
- arr[3] = 3;
- arr[4] = 4;
- arr[5] = 3;
- arr[6] = 2;
- arr[7] = 1;
- arr[8] = 0;
- var output = "";
- for(i=0; i<9; i++)
- {
- for(j=0; j<9; j++)
- {
- if(arr[i] > arr[j])
- output += (base - arr[j]) + " "
- else
- output += (base - arr[i]) + " "
- }
- output += "<BR>";
- }
- document.getElementById('DIVoutput').innerHTML = output;
- </script>
复制代码
把以上的Code copy 去 notepad, 然后 save 成 "xxx.htm" 就可以看了结果
[ 本帖最后由 sfkwan 于 18-10-2008 12:18 AM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 18-10-2008 12:59 AM
|
显示全部楼层
原帖由 sfkwan 于 18-10-2008 12:17 AM 发表 
这个好像没有解决问题
试下我的方法,用Javascript 写的,自己转换去 PHP
var base = 5;
var i,j;
var arr = new Array();
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
arr[3] = 3;
arr[ ...
除了nested for/while loop, 其实 Recursive function 也是一样可以做到
最重要的是,你要找出那个关系
同样的把以下的Code Save 成 "zzz.htm" 即可
- <html>
- <body>
- <div id="DIVoutput">
- </div>
- </body>
- </html>
- <script language = "javascript">
- var base = 5;
- var arr = new Array();
- arr[0] = 0;
- arr[1] = 1;
- arr[2] = 2;
- arr[3] = 3;
- arr[4] = 4;
- arr[5] = 3;
- arr[6] = 2;
- arr[7] = 1;
- arr[8] = 0;
- function gogogo(i, j)
- {
- if(i>8)
- return '';
- var currentVal = getValue(i, j) + " ";
- if(j<8)
- {
- j=j+1;
- return currentVal + gogogo(i, j)
- }
- else
- {
- i = i+1;
- return currentVal + '<BR>' + gogogo(i, 0)
- }
- }
- function getValue(i, j)
- {
- if(arr[i] > arr[j])
- return base - arr[j];
- else
- return base - arr[i];
- }
- document.getElementById('DIVoutput').innerHTML = gogogo(0,0);
- </script>
复制代码 |
|
|
|
|
|
|
|
|
|
|
发表于 18-10-2008 01:05 AM
|
显示全部楼层
原帖由 ~天使泪~ 于 16-10-2008 01:53 AM 发表 
谢谢 如果我用form post 资料 过去 让他转变呢?
我的array 很烂
No title
过后出的东西是
012112222
但是我还是不会用array 来算数
请高手帮忙下。
不好意思,不是很明白你要的是些什么 |
|
|
|
|
|
|
|
|
|
|
发表于 18-10-2008 11:00 AM
|
显示全部楼层
原帖由 sfkwan 于 18-10-2008 12:59 AM 发表 
除了nested for/while loop, 其实 Recursive function 也是一样可以做到
最重要的是,你要找出那个关系
同样的把以下的Code Save 成 "zzz.htm" 即可
var base = 5;
var arr = new Array();
...
刚刚修改了,变成了 Dynamic
- <html>
- <body>
- <div id="DIVoutput">
- </div>
- <input type=text id="count" value='5' >
- <input type=button onclick="func_1()" value="Loop method">
- <input type=button onclick="func_2()" value="Recursive method">
- </body>
- </html>
- <script language = "javascript">
- var base = 1;
- var arr = new Array();
- function func_1()
- {
- updateArray();
- var output = "";
- for(i=0; i<base*2-1; i++)
- {
- for(j=0; j<base*2-1; j++)
- {
- if(arr[i] > arr[j])
- output += (base - arr[j]) + " "
- else
- output += (base - arr[i]) + " "
- }
- output += "<BR>";
- }
- document.getElementById('DIVoutput').innerHTML = output;
- }
- function func_2()
- {
- updateArray();
- document.getElementById('DIVoutput').innerHTML = gogogo(0,0);
- }
- function gogogo(i, j)
- {
- if(i > base*2-2)
- return '';
- var currentVal = getValue(i, j) + " ";
- if(j < base*2-2)
- {
- j=j+1;
- return currentVal + gogogo(i, j)
- }
- else
- {
- i = i+1;
- return currentVal + '<BR>' + gogogo(i, 0)
- }
- }
- function updateArray()
- {
- base = document.getElementById('count').value;
- for(i=0; i<base; i++)
- {
- arr[i] = i;
- }
- for(i; i< base*2; i++)
- {
- arr[i] = ((base - i) + (base -2));
- }
- }
- function getValue(i, j)
- {
- if(arr[i] > arr[j])
- return base - arr[j];
- else
- return base - arr[i];
- }
- </script>
复制代码 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-10-2008 02:19 PM
|
显示全部楼层
好厉害
但是我不会js 。我自己学php 只会php罢了.
我的意思 是 用 php的功能 做出 post 过去资料 让他转
比例 :
在html form那里 我打 2 他就会出现
2 2 2
2 1 2
2 2 2
如果打5 他就会 出现
5 5 5 5 5 5 5 5 5
5 4 4 4 4 4 4 4 5
5 4 3 3 3 3 3 4 5
5 4 3 2 2 2 3 4 5
5 4 3 2 1 2 3 4 5
5 4 4 4 4 4 4 4 5
5 5 5 5 5 5 5 5 5
[ 本帖最后由 ~天使泪~ 于 19-10-2008 02:24 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 19-10-2008 03:05 PM
|
显示全部楼层
判断的重点在中间的号码
只要中间的号码一直减,直到 == 1,流程开始由减变加。
当做半边来做,
2 2
2 1
2 2
之后再reverse array + merge 在一起
[ 本帖最后由 vampcheah 于 19-10-2008 03:07 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 19-10-2008 04:58 PM
|
显示全部楼层
原帖由 ~天使泪~ 于 19-10-2008 02:19 PM 发表 
好厉害
但是我不会js 。我自己学php 只会php罢了.
我的意思 是 用 php的功能 做出 post 过去资料 让他转
比例 :
在html form那里 我打 2 他就会出现
2 2 2
2 1 2
2 2 2
如果打5 他就会 出 ...
参考第七楼,那个就是答案 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 21-10-2008 12:49 PM
|
显示全部楼层
document.getElementById('DIVoutput').innerHTML = output;
document.getElementById('DIVoutput').innerHTML = gogogo(0,0);
base = document.getElementById('count').value;
我看不懂这3句话的意思. 能解释下吗 我不会js  |
|
|
|
|
|
|
|
|
|
|
发表于 22-10-2008 11:57 AM
|
显示全部楼层
把之前的Code忘了吧,因为随便写,所以很乱
以下是整理过,应该会比较容易明白
- <html>
- <head>
- <script language = "javascript">
- var base = 1;
- var arr = new Array();
- //
- function getResult()
- {
- // Call function
- updateArray();
- var output = '';
- //Start generating the output
- // Loop - Rows
- for(i=0; i<base*2-1; i++)
- {
- // Loop - Columns
- for(j=0; j<base*2-1; j++)
- {
- // Call getValue function to get the appropriate number then append to output variable
- output += getValue(i, j) + ' ';
- }
- output += '<BR>';
- }
- // Output generated
- // Assign the output value to DIV object
- document.getElementById('DIVoutput').innerHTML = output;
- }
- // This function will generate the array according to the base number
- function updateArray()
- {
- // Read the value in the text box
- base = document.getElementById('count').value;
- // Start generating the array
- // Example:
- // If Base number 5:
- // [0][1][2][3][4][3][2][1][0]
- // If Base number 6:
- // [0][1][2][3][4][5][4][3][2][1][0]
- for(i=0; i<base; i++)
- {
- arr[i] = i;
- }
- for(i; i< base*2; i++)
- {
- arr[i] = ((base - i) + (base -2));
- }
- }
- // Core Logic
- // So far I can only think of this relationship,
- // I believe there should be another formula for the same
- function getValue(i, j)
- {
- if(arr[i] > arr[j])
- return base - arr[j];
- else
- return base - arr[i];
- }
- </script>
- </head>
- <body>
- <input type=text id="count" value='5' >
- <input type=button onclick="getResult()" value="Get Result">
- <!-- result will be displayed in this div -->
- <div id="DIVoutput">
- </div>
- </body>
- </html>
复制代码原帖由 ~天使泪~ 于 21-10-2008 12:49 PM 发表
document.getElementById('DIVoutput').innerHTML = output;
document.getElementById('DIVoutput').innerHTML = gogogo(0,0);
base = document.getElementById('count').value;
我看不懂这3句话的 ...
以上三行有个共同点,既是
document.getElementById(xxxxx)
基本上利用这个就可以得到该 doc 里的 object
这个题目的重点是在 getValue(i,j) 和 updateArray(),其他的都不是很重要
只要apply这个 Logic 在你的PHP 就可以了
[ 本帖最后由 sfkwan 于 22-10-2008 12:06 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 22-10-2008 12:20 PM
|
显示全部楼层
- <?php
- $number = 9;
- $arrSize = ($number * 2) - 1;
- $x = 0;
- $y = $arrSize - 1;
- $count=$number;
- for($i=0; $i<$count; $i++){
- for($j=$x; $j<=$y; $j++){
- $arrBoard[$x][$j] = $number;
- $arrBoard[$y][$j] = $number;
- $arrBoard[$j][$x] = $number;
- $arrBoard[$j][$y] = $number;
- }
- $x++;
- $y--;
- $number--;
- }
- //show the number
- for($a=0;$a<$arrSize; $a++){
- for($b=0;$b<$arrSize; $b++){
- echo $arrBoard[$a][$b];
- }
- echo "--br--"; // 跳去新的一行
- }
- ?>
复制代码
[ 本帖最后由 ~废材~ 于 22-10-2008 12:23 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 28-10-2008 08:53 AM
|
显示全部楼层
原帖由 ~废材~ 于 22-10-2008 12:20 PM 发表 
这位大大所提供的逻辑比较正确
所以参考这位大大的比较好,对你比较有帮助 |
|
|
|
|
|
|
|
|
|
|
发表于 28-10-2008 08:40 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 28-10-2008 11:53 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 29-10-2008 11:29 PM
|
显示全部楼层
我自己的写法
既然不太会用array的写法
<html>
<body>
<form method=" OST">
<input type="test" Name="aaa">
<input type="submit" Value="Send">
</form>
<table border="1">
<?php
$d=$_POST["aaa"];
$t=$d*2-1;/*table gui ge*/
$z=$t/2;
$y=round($z,0);
for($a=1; $a<=$t; $a++)
{
echo "<tr>";
for($b=1; $b<=$t; $b++)
{
$e=$e+1;
if ($a==1 or $a==$t or $b==1 or $b==$t)
{
echo "<td>$d</td>";
}
elseif ($a==$y and $b==$y)
{
echo "<td>1</td>";
}
else
{
for ($c=1; $c<=$y; $c++)
{
if ($a==1+$c or $a==$t-$c or $b==1+$c or $b==$t-$c)
{
if ($c==$y)
{
$e=1;
}
elseif ($c<$y)
{
$e=$d-$c;
}
echo "<td>$e</td>";
$c=$y;
}
}
}
}
}
echo"</tr>";
?>
</table>
</body>
</html> |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 29-10-2008 11:30 PM
|
显示全部楼层
但是很长。。。 |
|
|
|
|
|
|
|
|
|
|
发表于 1-11-2008 08:27 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 2-11-2008 02:26 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|