PHP foreach使用通过ajax请求发送的数组失败.发送给函数的正确数据


PHP foreach using an array sent via an ajax request failing. Correct data sent to function

在ajax请求中,我发送一个member_id数组,以便返回屏幕名称。成员id存储如下:

var member_id = [];
    Ext.each(selected_rows, function(item) {
        member_id.push(item.data.member_id);
    });

然后我将它们发送到retrieve_members函数

Ext.Ajax.request({
                    action: 'retrieve_members',
                    member_id: member_id,
                    success_fn: function(response) {
                    //do stuff
                    }
                }); //end ajaxRequest

Firebug在发送呼叫时显示此信息:

action  retrieve_members
member_id   45FA3B10-4546-B9F7-D23
member_id   9627B65B-4D82-B2E8-4CE

在retrieve_members函数中:

function retrieve_members($request) {
$member_ids = substr($request->member_id,0,-1);
    foreach($member_ids as $member_id) {
        $current_member = Member::retrieveById($request->db, $member_id);
        $member_list = $current_member->getGroupMembers();
        $members = array();
        foreach ( $member_list as $member ) {
            $member_list[] = array(
                'id' => $member->id,
                'screen_name' => $member->screen_name,
            );
        }
    }
return json_encode(array('status' => 'OK', 'member_list' => $member_list));
}

如果我删除foreach并替换以下行:

$member = Member::retrieveById($request->db, $request->$member_id);

我得到了1个成员的正确数据。我知道"substr($request->member_id,0,-1);"可能是错误的,但我已经多次尝试将正确的member_ids传递给foreach。我不确定我做错了什么,但就目前情况来看,member_list将始终返回null。感谢您的帮助!

更新:print_r($request->member_id);返回以下错误:

identifier starts immediately after numeric literal
[Break On This Error]   
(9627B65B-4D82-B2E8-4CE)

您似乎正在覆盖一些变量。也许试试:

function retrieve_members($request) {
$member_ids = substr($request->member_id,0,-1);
    foreach($member_ids as $member_id) {
        $member = Member::retrieveById($request->db, $member_id);
        $member_list = $member->getGroupMembers();
        $members = array();
        foreach ( $member_list as $tempMember ) {
            array_push($members,array(
                'id' => $tempMember->id,
                'screen_name' => $tempMember->screen_name,
            ));
        }
    }
return json_encode(array('status' => 'OK', 'member_list' => $members));
}