首页 > 后端开发 > 正文

在php中,数组的索引超过数组的界限是什么原因?

2024-11-23 10:15:42 | 我爱编程网

今天我爱编程网小编整理了在php中,数组的索引超过数组的界限是什么原因?相关内容,希望能帮助到大家,一起来看下吧。

本文目录一览:

在php中,数组的索引超过数组的界限是什么原因?

在php中,数组的索引超过数组的界限是什么原因?

索引超出了数组界限解决方法:

a.connected[i] = vertices[i+1];

称之为索引i+1。这将导致一个index out of bounds exception。(在你n等于19的例子中:有效索引将是[0-18]。

你的循环将从0-18开始,但是在该行中,它将会添加一个18 + 1 = 19,这是一个无效索引)在你的循环中将条件更改为:

for (int i = 0; i<n-1; i+=2){

确保它在添加之后不会超出界限。

Vertex [] vertices = new Vertex[n]; int [] numbers = new int[n*2]; AdjacencyList[] all = new AdjacencyList [n+1];for (Vertex v : vertices){
System.out.println(v.value);

AdjacencyList a = new AdjacencyList(v);
for (int i = 0; i < n; i += 2)
{

我爱编程网

if (numbers[i] == v.value){
a.connected[i] = vertices[i+1];//array index out of bounds exception:19
else { a.connected[i] = v; }
}
all[0] = a; //add the finished adjacency list to the array

}

与n = 19我可以得到一个索引超出边界错误在代码中指出的点。我不确定我哪里会出问题,因为一切都还在19的范围内。

顶点=顶点列表[1-19],数字是一个平坦的边缘数组。

在php中,数组的索引超过数组的界限是什么原因?

1、自定义函数:传入一个一维索引数组,要求3个元素换一行,循环输出(用php做求代码,各位大神帮帮忙)

function fun1($arr){
    for($i=0;$arr<cont($arr);$i++){
        echo $arr[$i]." ";
        if($i%3==2)
        echo "<br />";
    }
}
function fun12($arr){
    $i=0;
    foreach($arr as $key=>$value){
        echo $value." ";
        $i++;
        if($i%2==1)
        echo "<br />";
    }
}
function fun3($arr){
    $n=0;
    for($i=0;$arr<cont($arr);$i++){
        if($arr[$i]%2==0)
        $n++;
    }
    return $n;
}
function fun4($arr){
    $n=0;
    foreach($arr as $key=>$value){
        if($value%2==1)
        $n++;
    }
    return $n;
}
function fun5($arr){
    $n=0;
    for($i=0;$arr<cont($arr);$i++){
        if($arr[$i]%2==1)
        $n+=$arr[$i];
    }
    return $n;
}
function fun6($arr){
    $n=0;
    foreach($arr as $key=>$value){
        if($value%2==0)
        $n+=$value;
    }
    return $n;
}
function fun7($arr){
    for($i=0;$arr<cont($arr);$i++){
        if($arr[$i]<7)
        array_splice($arr,$i,1);
    }
    return $arr;
}
function fun8($arr){
    $i=0;
    foreach($arr as $key=>$value){
        if($key=='name')
        array_splice($arr,$i,1);
        $i++;
    }
    return $arr;
}
function fun9($arr){
    for($i=0;$arr<cont($arr);$i++){
        if($arr[$i]%2==0)
        $arr[$i]=$arr[$i]*2;
    }
    return $arr;
}
function fun10($arr){
    for($i=0;$arr<cont($arr);$i++){
        if($arr[$i]['sex']=='女')
        arr[$i]['name']=zhangsan;
    }
    return $arr;
}

php中遍历数组方法

我爱编程网(https://www.52biancheng.com)小编还为大家带来php中遍历数组方法的相关内容。


遍历数组有多种实现方法:
1、连续索引的数组:
实现连续数组的遍历很简单,因为数组的索引是连续的(0 1 2),所以我们可以首先用count()函数计算出数组中元素的个数,然后建立一个for循环,如下:
$subject=array("maths","english","physics");
$num_elements=count($subject); //这时$num_elements的值为3
for ($i=0;$i$num_elements; ++$i){
echo ("$subject[$i]
\n");
}
结果为:
maths
english
physics
这里我们给$i赋了初值为0,是因为数组元素的索引默认为0 1 2,如果第一个元素的索引不为0,我们只需:
$subject=array(3="maths","english","physics");
$num_elements=count($subject)+3; //注意这里
for ($i=3;$i$num_elements; ++$i){
echo ("$subject[$i]
\n");
}
这里将$i赋了值3,同时$num_elements=count($subject)+3,这里很容易被忽视。
2 、非连续索引的数组:
$subject=array("m"="maths","e"="english","p"="physics");
这里建立了一个了数组,索引值分别为"m" "e " "p",这样的数组怎么遍历?
方法一:使用list()和each()函数组合
$subject=array("m"="maths","e"="english","p"="physics");
reset($subject); //把指针复位到第一个元素上
while (list($key,$value)=each($subject)){
echo "$key is $value
\n"; }
方法二:使用foreach语句
$subject=array("m"="maths","e"="english","p"="physics");
foreach($subject as $key = $value){
echo "$key is $value
\n";
}
?
是不是比list()和each()简单。
foreach 与 list() each()组合的不同之处:
foreach 是在原来数组的拷贝上执行操作的。他的优点是不会影响当前数组指针的位置,缺点是对于一个很大的数组,复制所花的时间很长。
list() each()组合 很明显用他遍历、之后,指针的位置改变了。
方法三:使用array_walk()函数遍历数组
array_walk()是让使用者自定义函数,处理阵列中的每一个元素。
$subject=array("maths","english","physics");
function printElement($element){
print ("$element
\n");
}
array_walk($subject,"printElement");

以上就是在php中,数组的索引超过数组的界限是什么原因?全部内容,更多相关信息,敬请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“在php中,数组的索引超过数组的界限是什么原因?”相关推荐
php odbc连接oracle ,odbc_num_rows>0,但是odbc_fetch_row 的时候很忙,一直超时什么原因?
php odbc连接oracle ,odbc_num_rows>0,但是odbc_fetch_row 的时候很忙,一直超时什么原因?

php用ODBC连接SQLSERVER出错!!!!还可能是这个原因,你的系统应该是64bit的,在新建dsn要用64bit的odbc,不能用WIN7自带控制面板里面的管理工具里面的数据源添加。必须用C:\Windows\SysWOW64\odbcad32.exe来添加数据源才好用。phpodbc连接oracle,odbc_num_rows>0,但是odbc_fetch_row的时候很忙,

2025-02-25 11:53:39
eclipseJava中文输出乱码是什么原因?
eclipseJava中文输出乱码是什么原因?

eclipseJava中文输出乱码是什么原因?eclipseJava中文输出乱码的原因可能是字符编码与默认的编码不符合导致的。可以尝试以下方法解决:1.修改Eclipse编码设置:点击Eclipse菜单栏的"Window",选择"Preferences";在弹出的窗口中,找到"General"-&gt;"Workspace";在右侧的"Textfileencoding"选项中选择合

2024-04-14 03:47:49
php 数组索引值如何重新从0开始递增
php 数组索引值如何重新从0开始递增

php数组索引值如何重新从0开始递增对于索引数组,php还有提供了另外一个内置函数,能够重置数组索引 array_merge($arr) ,当array_merge()只传入一个参数且键名是整数,返回该数组,其键名以0开始进行重新索引。其中PHP中的数组实际上是一个有序映射。映射是一种把values关联到keys的类型。换言之,数组是特殊的变量,可以同时保存一个以上的值。在PH

2024-08-25 00:28:11
大师求救,php的sleep()函数出现中断,什么原因?
大师求救,php的sleep()函数出现中断,什么原因?

大师求救,php的sleep()函数出现中断,什么原因?functionok后面要有个括号。这个不重要。中断不是因为php程序,不是sleep的问题,一个原因是浏览器主动断开了,一般来说,http来连接的,客户端都会等待一定时间后,就认为是连接丢失了,就会报504错误了。也有个原因是webserver的原因,进程管理模块认为你的子进程进入了死循环,主动终止了。还有个原因,就

2024-08-06 11:18:05
PHP错误: call to undefinedfunction是什么原因?
PHP错误: call to undefinedfunction是什么原因?

使用PHP中pathinfo函数讲解pathinfo()是PHP中的内置函数,用于以关联数组或字符串形式提供文件路径信息。调用方式为pathinfo(path,options),返回一个关联数组,包含路径信息。使用pathinfo函数的步骤如下:首先,你需要指定要检查的路径作为参数传递给pathinfo()函数。其次,可选择性地提供一个options参数,规定返回的数组元素

2024-12-13 17:03:26
JAVA 乱码 根本原因是什么
JAVA 乱码 根本原因是什么

JAVA乱码根本原因是什么右键点击乱码文件,选preferenses,看看resource里的编码是不是正确,如果不是utf-8就改成utf-8,如果是utf-8的话你改成别的编码试试看看,然后把正常状态下的内容复制出来,在把文件改成utf-8后把文件复制进去Win7系统打开java文件出错显示乱码如何解决很多程序人员都会使用java程序写文件,只有成功运行java程序文件显示正确结果

2024-06-01 18:40:43
array_intersect_key语法(使用用户自定义的比较函数对数组中的值进行排序并保持索引关联?)
array_intersect_key语法(使用用户自定义的比较函数对数组中的值进行排序并保持索引关联?)

array_intersect_key语法在PHP编程中,array_intersect_key()函数是一个用于处理数组的实用工具,它的主要任务是找出多个数组中键值对的交集。这个函数需要至少两个数组作为输入参数,但可以接受任意数量的数组进行比较。第一个参数array1是函数的基础,它被视为比较的起点。这个数组中的键值对将被与其他数组进行匹配。例如,如果array1是键值对{'a':1

2024-12-28 04:05:36
php限制函数超时 php socket fgets超时问题
php限制函数超时 php socket fgets超时问题

phpsocketfgets超时问题PHP程序的脚本,默认配置是30时间还没有执行完毕,就直接中断了。你上面的情况有可能就是这样吧,第一次接受的时候,还没有到30秒,之后到了,程序超时中断了。下面的这个语句是将事件设置为不超时,希望对你有帮助。set_time_limit(0);php进程超时接口返回504错误分析当然如果在进行某一项即时的操作,可能需要nginx的超时参数

2024-10-18 21:34:22