PHP list() - explode()偏移量错误

时间:2013-05-23 15:48:58

标签: php codeigniter

讨论为什么这会返回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();感谢您对此有任何见解。

以下是错误的网址。 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);
        }
    });

3 个答案:

答案 0 :(得分:2)

你的问题是爆炸()似乎只返回一个值。

list()正在尝试:

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

仔细检查你的$ hash值。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

这种情况正在发生,因为您没有从爆炸功能返回2个令牌。这意味着您需要检查输入以确保您获得所需的2个令牌。