legendren 发表于 2004-1-10 20:05:01

[求助]如何定义数组?

我参阅了PHP手册,里面介绍定义数组的方法:
可以用 array() 语言结构来新建一个 array。它接受一定数量用逗号分隔的 key => value 参数对。

array( [key =>]
value
   , ...
   )
// key 可以是 integer 或者 string
// value 可以是任何值

我写了这样一段代码:

      //从一列数中找最大数和最小数
      <?php
      echo"寻找一个数组中的最大数和最小数";
      $c=array(12,678,5,8900,45,333,123,76,89,890000,56);
      $max=0;
      $min=10000000;
      for($i=0;$i<count($c);$i++){
            if($max<$c[$key=$i]){
               $max=$c[$key=$i];
            }
            if($c[$key=$i]<$min){
               $min=$c[$key=$i];
            }
      }
      echo"最大数是:$max\n";
      echo"最小数是:$min\n";
      ?>
在C中定义数组可以用:int a[]={1,2,3}
在PHP下为什么那么麻烦呢?!
我还从手册上看到:用方括号的语法新建/修改
可以通过明示地设定值来改变一个现有的数组。

这是通过在方括号内指定键名来给数组赋值实现的。也可以省略键名,在这种情况下给变量名加上一对空的方括号(“[]”)。 $arr[key] = value;
$arr[] = value;
// key 可以是 integer 或者 string
// value 可以为任何值。

似乎在PHP中“[]”是用来新增数组元素的 :roll: 那么C中定义数组的方法应该也可以理解成新增一列元素了么?
上面用PHP写的从一列数中找最大数和最小数用C实现如下:

      int c[]={12,678,5,8900,45,333,123,76,89,890000,56};
      int max=0;
      int min=10000000;
      for(int i=0;i<count(int c[]);i++){
            if(max<c[i]){
               max=c[i];
            }
            if(c[i]<min){
               min=c[i];
            }
      }

我想弄清概念:
在PHP下,如想定义成$a[]={1,2,3};是有语法错误的!为什么呢?那么正确的形式是什么样的呢?
在PHP如想遍历数组,用$c[$i]为什么也有语法错误呢?
请大侠赐教!!!

legendren 发表于 2004-1-11 10:11:21

如果不用array()函数构建数组,仅用$a[]
如何构建功能上和int a[]={1,2,3};等价的PHP语言下的数组呢?

jiangtao9999 发表于 2004-1-11 13:31:51

在 PHP 上是很麻烦,但你不要忘了 PHP 变量的类型是可变的……………
$a即可以是个单个变量,也可以是个数组。如果它是数组的话 $a 将成为一个二维数组。
如果不用 array() 而直接 $a[]={1,2,3} 是什么意思?


$a=1
$a=2
$a=3

还是(二维数组是这样表示吧?我经常和 Basic 弄混)

$a=1
$a=2
$a=3

是哪个?

你可以不用 array() 而这样赋给变量值
$a[]=1;
$a[]=2;
$a[]=3;

或者
$a=array(1,2,3);

但就是不能用{}赋值~~~


$c[$i] 方式的可以使用,以下代码在我的机器上输出正常:

<?php
$a=array(0,1,2,3);

for($i=0;$i<4;$i++)
{
        echo $a[$i];
        echo "<br>";
}

?>

jiangtao9999 发表于 2004-1-11 13:35:19


$c[$key=$i]


在下标的地方怎么出现了“=”?????

legendren 发表于 2004-1-11 18:55:28

嗯,我用MPS PHP EDITOR环境遍历数组时,死活都要出现语法错误 :oops:
当我尝试$c[$key=$i]时,居然通过了 :shock:
我想是不是PHP手册上所说的:
array(
value
   , ...
   )
// key 可以是 integer 或者 string
// value 可以是任何值
key是个键值,而键值可以人为赋值,我只能这么认为了……
你写的:
<?php
$a=array(0,1,2,3);

for($i=0;$i<4;$i++)
{
echo $a[$i];
echo "<br>";
}
能否进行if($a[$i]<$a[$i+1])的判断呢?我写成这样时,编译器总说我越界了!
我想$i应该是从0开始呀,他怎么一下子直到第count($a)了呢?
我写成$a[]={};是想让大侠指出C和PHP的区别,谢谢你的指点 :P

jiangtao9999 发表于 2004-1-11 21:52:32

if($a[$i]<$a[$i+1])可以使用~~~~

以下代码运行通过:

<?php
$a=array(0,1,2,3);

for($i=0;$i<4;$i++)
{
        if($a[$i]<$a[$i+1])
                echo"true";
        else
                echo"fails";
        echo"<br>";
}

?>

输出为:

true
true
true
fails
页: [1]
查看完整版本: [求助]如何定义数组?