1

绞尽脑汁想为什么这会返回 PHP 错误:未定义的偏移量:1

public function index($hash)
    {   
        //$hash = 44253_13456789
        list($part1,$part2) = explode('_', $hash);

        $id = $part1;

        $tpl_data = array('id' => $id );
        $this->load->view('main/index', $tpl_data);
    }

错误发生在 list() = explode(); 感谢您对此的任何见解。

这是错误的 URL。http://www.onlinealbumproofing.com/beta/ipad/index/44253_1368207168

更新:

这是控制器代码。

echo $hash;

list($part1,$part2) = explode('_', $hash);

$id = $part1;

$tpl_data = array('id' => $id );
$this->load->view('ipad/index', $tpl_data);

再次更新...... 好的,所以看起来错误发生在ajax请求上

var id = $('body').attr('id');

    $.ajax({
        url: 'ipad/loadImages',
        type: 'POST',
        dataType: 'json',
        data: {id: id},
        success: function(json, textStatus, xhr) {
            for (var i = 0; i < json.images.length; i++) {

                //do something
            }
        }, error: function(json, textStatus) {
            console.log(textStatus);
        }
    });
4

3 回答 3

2

您的问题是 explode() 似乎只返回一个值。

list() 正在尝试做:

 $tmp = explode("_", $hash);
 $part1 = $tmp[0];
 $part2 = $tmp[1]; //Here is your undefined offset.

仔细检查您的 $hash 值。

于 2013-05-23T15:51:49.113 回答
0

list($part1,$part2)要求数组至少有两个元素。

如果其中$hash没有 a _,则explode('_', $hash)不会返回包含两个元素的数组。

于 2013-05-23T15:51:35.563 回答
0

发生这种情况是因为您没有2从您的 explode 函数返回令牌。这意味着您需要检查输入以确保您将获得所需的 2 个令牌。

于 2013-05-23T15:51:48.083 回答