麻烦将foreach创建的数组传递给JSON

时间:2016-01-14 16:29:43

标签: php arrays json

我正在使用Stripe处理客户付款并维护订阅(旁注,这太棒了)。我需要在我的网页上列出客户的订阅,我需要假设他们最多可以订阅300个订阅(基本上无限制)。我在PHP中创建了一些代码,用于成功查询Stripe以获取客户的订阅,但只有最后一个(在本例中是测试帐户中的第五个)订阅是通过JSON发送的。

这是我的PHP代码:

$custsubs = \Stripe\Customer::retrieve($customerID)->subscriptions->all(array(
      'limit'=>300));

               $i = 1;

               foreach ($custsubs['data'] as  $row){
                $rows= '<tr></td><td>'.$row['plan']['id'].'</td><td>'.$row['metadata']['Cust_Info'].'</td><td>$'.(($row['plan']['amount'])/100).'</td><td>'.$row['plan']['interval'].'ly</td><td>
                <div style="text-align:right" id="setdefaultplan'.$i.'" name="setdefaultplan'.$i.'"> <button class="button btn-blue" type="button" id="defplan'.$i.'" ><i class="fa fa-level-down"></i> Change </button></div></td><td>
                <div style="text-align:right" name="remplan'.$i.'" id="remplan'.$i.'"> <button class="button btn-red" type="button" id="removeplan'.$i.'" ><i class="fa fa-fw fa-ban"></i> Cancel Plan </button></div></td></tr>';
               $i++;
                               }
               $results = array('error' => false,               
                    'rows' => $rows
                    );
                echo json_encode($results);
                die();

JSON结果如下:

{"error":false,"rows":"<tr><\/td><td>Monthly DIY Web Portal Access<\/td><td>Test Info<\/td><td>$6.95<\/td><td>monthly<\/td><td>\r\n\t\t\t\t<div style=\"text-align:right\" id=\"setdefaultplan5\" name=\"setdefaultplan5\"> <button class=\"button btn-blue\" type=\"button\" id=\"defplan5\" ><i class=\"fa fa-level-down\"><\/i> Change <\/button><\/div><\/td><td>\r\n\t\t\t\t<div style=\"text-align:right\" name=\"remplan5\" id=\"remplan5\"> <button class=\"button btn-red\" type=\"button\" id=\"removeplan5\" ><i class=\"fa fa-fw fa-ban\"><\/i> Cancel Plan <\/button><\/div><\/td><\/tr>"}

我将res.rows传递给JQuery以使其在HTML表格中整齐地呈现,但我不明白为什么我只在foreach循环中获得第5个实例。我怎么做到这一点,我把他们全部送去了res.rows?

谢谢!

1 个答案:

答案 0 :(得分:3)

在循环完成 AFTER 之前,您永远不会将$rows存储到数组中,因此您只能存储生成的最后一行。

你想:

foreach(...) {
   $rows[] = ....;
        ^^---array append
}

相反,所以你要构建一个行数组。