从角度js传递后,在php中检索一个数组

时间:2016-02-05 08:59:50

标签: javascript php arrays angularjs

我有一个像这样的数组

 $scope.kk =  [
        { name:'Computer Architecture', price:65 }, 
        { name:'Advanced Composite Materials', price:45 }, 
        { name:'Stategies Unplugged', price:43 }, 
        { name:'Teaching Science', price:50 }, 
        { name:'Challenging Times', price:22 }];

我已经通过像这样的webapi将这个数组传递给了我的控制器

     var req1= {
                        method: 'POST',
                        url: apiPoint.url + 'sin.php',
                        headers: {
                            'Content-Type': 'application/json'
                        },
                       params :{
                           "fulldet[]" : $scope.kk
                       }
 $http(req1).then(function (response) {
                    if (response.data.status) {
                        alert(JSON.stringify(response.data));
}
}

在我的控制器中我需要提取这个数组 我使用了像这样的foreach语句

$result['ppp'] = $fulldet;

foreach($fulldet as $e){
                $result['lm']=$e['name'];
            }

但我得到了ILLEGAL STRING OFFSET 'name' 请帮帮我。

对于我的参考,我在控制器的响应之后打印了我的阵列。我明白了这个

{"ppp":["
            {\" name\":\"Computer Architecture\", \"price\":65 }, 
            {\" name\":\"Advanced Composite Materials\", \"price\":45 }, 
            { \"name\":\"Stategies Unplugged\", \"price\":43 }, 
            {\" name\":\"Teaching Science\", \"price\":50 }, 
            {\" name\":\"Challenging Times\", \"price\":22 }"]}

2 个答案:

答案 0 :(得分:1)

在尝试迭代数组之前,将json_decode应用于它。

$result['ppp'] = json_decode($fulldet, true);

foreach($fulldet as $e){
    $result['lm']=$e['name'];
}

答案 1 :(得分:-1)

正如我现在看到的,您的问题是当您尝试在服务器端获取数据时(抱歉,以前的答案)。

您在请求中传递的参数应为字符串而不是数组

所以你改变了这个:

params :{
                           "fulldet[]" : $scope.kk
                       }

到此:

 params :{
                           "fulldet" : $scope.kk
                       }

尝试获取这样的POST数据:

$results = json_decode(file_get_contents('php://input),true);

foreach($results as $item){
   echo  $item['name'];
 }