QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2377|回复: 5

[求助]如何定义数组?

[复制链接]
发表于 2004-1-10 20:05:01 | 显示全部楼层 |阅读模式
我参阅了PHP手册,里面介绍定义数组的方法:
[code:1]可以用 array() 语言结构来新建一个 array。它接受一定数量用逗号分隔的 key => value 参数对。

array( [key =>]
value
     , ...
     )
// key 可以是 integer 或者 string
// value 可以是任何值
[/code:1]
我写了这样一段代码:
[code:1]
        //从一列数中找最大数和最小数
        <?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";
        ?>[/code:1]
在C中定义数组可以用:[code:1]int a[]={1,2,3}[/code:1]
在PHP下为什么那么麻烦呢?!
我还从手册上看到:[code:1]用方括号的语法新建/修改
可以通过明示地设定值来改变一个现有的数组。

这是通过在方括号内指定键名来给数组赋值实现的。也可以省略键名,在这种情况下给变量名加上一对空的方括号(“[]”)。 $arr[key] = value;
$arr[] = value;
// key 可以是 integer 或者 string
// value 可以为任何值。
[/code:1]
似乎在PHP中“[]”是用来新增数组元素的 那么C中定义数组的方法应该也可以理解成新增一列元素了么?
上面用PHP写的从一列数中找最大数和最小数用C实现如下:
[code:1]
        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];
            }
        }
[/code:1]
我想弄清概念:
在PHP下,如想定义成$a[]={1,2,3};是有语法错误的!为什么呢?那么正确的形式是什么样的呢?
在PHP如想遍历数组,用$c[$i]为什么也有语法错误呢?
请大侠赐教!!!
 楼主| 发表于 2004-1-11 10:11:21 | 显示全部楼层
如果不用array()函数构建数组,仅用$a[]
如何构建功能上和int a[]={1,2,3};等价的PHP语言下的数组呢?
回复

使用道具 举报

发表于 2004-1-11 13:31:51 | 显示全部楼层
在 PHP 上是很麻烦,但你不要忘了 PHP 变量的类型是可变的……………
$a[1]  即可以是个单个变量,也可以是个数组。如果它是数组的话 $a 将成为一个二维数组。
如果不用 array() 而直接 $a[]={1,2,3} 是什么意思?


$a[0]=1
$a[1]=2
$a[2]=3

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

$a[0][0]=1
$a[0][1]=2
$a[0][2]=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>";
}

?>
回复

使用道具 举报

发表于 2004-1-11 13:35:19 | 显示全部楼层
$c[$key=$i]


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

使用道具 举报

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

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

使用道具 举报

发表于 2004-1-11 21:52:32 | 显示全部楼层
if($a[$i]<$a[$i+1])可以使用~~~~

以下代码运行通过:
[code: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>";
}

?>
[/code:1]
输出为:

true
true
true
fails
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 07:48 , Processed in 0.039197 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表