PHP程序中怎么解决“未定义的索引”这个问题

PHP程序中怎么解决“未定义的索引”这个问题,第1张

通常出现未定义的索引问题是由于数组没有这个值造成的,数组分为关联数组和索引数组,索引数组是数字下标;关联数组是键值下标。

$POST['id']之所以报未定义索引是因为$POST这个数组里没有包含下标键值为id的值。

解决办法: 判断数组中是否包含下标键值为id的值,如果没有,则返回错误信息,如何判断呢,最简单的方法就是用函数isset来判断,如isset($POST['id']),存在则返回true,反之则为false;

三元判断法,不存在给一个默认的数值,        如 $POST['id'] = isset($POST['id'])$POST['id']:"1";

PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。

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

aconnected[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[n2]; AdjacencyList[] all = new AdjacencyList [n+1];for (Vertex v : vertices){

Systemoutprintln(vvalue);

AdjacencyList a = new AdjacencyList(v);

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

{

if (numbers[i] == vvalue){

aconnected[i] = vertices[i+1];//array index out of bounds exception:19

else { aconnected[i] = v; }

}

all[0] = a; //add the finished adjacency list to the array

}

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

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

直接用 array_flip 或者 array_unique 是不行的,你这没有键名,必须要自己写函数

<php

function unique_arr($array2D,$stkeep=false,$ndformat=true)

{

    // 判断是否保留一级数组键 (一级数组键可以为非数字)

    if($stkeep) $stArr = array_keys($array2D);

    // 判断是否保留二级数组键 (所有二级数组键必须相同)

    if($ndformat) $ndArr = array_keys(end($array2D));

    //降维,也可以用implode,将一维数组转换为用逗号连接的字符串

    foreach ($array2D as $v){

        $v = join(",",$v);

        $temp[] = $v;

    }

    //去掉重复的字符串,也就是重复的一维数组

    $temp = array_unique($temp);

    //再将拆开的数组重新组装

    foreach ($temp as $k => $v)

    {

        if($stkeep) $k = $stArr[$k];

        if($ndformat)

        {

            $tempArr = explode(",",$v);

            foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;

        }

        else $output[$k] = explode(",",$v);

    }

    return $output;

}

$arr = array(

    0 => array

    (

        0 => 1,

        1 => 2

    ),

    1 => array

    (

        0 => 1,

        1 => 2

    ),

    2 => array

    (

        0 => 2,

        1 => 3

    ),

    3 => array

    (

        0 => 2,

        1 => 3

    ),

    4 => array

    (

        0 => 3,

        1 => 4

    ),

    5 => array

    (

        0 => 3,

        1 => 4

    ),

);

var_dump( array_values(unique_arr( $arr )) );

去重函数可参考: >

以上就是关于PHP程序中怎么解决“未定义的索引”这个问题全部的内容,包括:PHP程序中怎么解决“未定义的索引”这个问题、在php中,数组的索引超过数组的界限是什么原因、php二维数组处理,并重置索引。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9337413.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存