我怎么能提取这个数组PHP或Cakephp

时间:2013-07-01 10:40:49

标签: php arrays cakephp cakephp-2.0 cakephp-2.1

我正在开发一个cakephp 2.x,我正在通过json fromat将数据从android发送到我的webapp

当我 print_r 数据时,我在 $ data 变量中获取数据

  Array (
     [sms] => [[+16063934284, hello, 1, 1372671157000]]
  )
  

我想访问这个数组的每个元素,或者想要将每个元素保存在一个单独的变量中......比如我想做这样的事情

   $number = ['sms'][0]

抱歉,我在阵列中这一周所以不知道我怎么能这样做

5 个答案:

答案 0 :(得分:1)

如果你的回答是这样的话,这是无效的JSON:

  

[sms] => [['+16063934284','hello',1,11372671157000]]

现在您可以使用json_decode功能,那么您将拥有以下内容:

Array
(
    [0] => Array
        (
            [0] => 16063934284
            [1] => 123
            [2] => 1
            [3] => 1372671157000
        )

)

稍后,您可以使用foreach()遍历新数组的元素。

这是一个有效的例子:

答案 1 :(得分:1)

我不知道你是如何构建数据的,但你应该能够将它分配到这样的列表中:

foreach ($data['sms'] as $row) {
    list($number, $message, $param3, $param4) = $row;
}

但由于某种原因,你似乎在一个数组中有一个数组(带有两个开口的方括号)所以它实际上看起来像这样:

foreach ($data['sms'] as $row) {
    list($number, $message, $param3, $param4) = $row[0];
}

无论哪种方式,您都可以通过变量名称访问循环中的数字:

foreach ($data['sms'] as $row) {
    list($number, $message, $param3, $param4) = $row[0];
    printf('Number is %s', $number);
}

答案 2 :(得分:0)

$data['sms']内的json数据不正确json。您需要在Android应用中手动解析此字符串或生成正确的json。 如果要解析数据,请使用下一个代码:

$sms = str_replace('[[', '', $data['sms']);
$sms = str_replace(']]', '', $sms);
$sms = explode(', ', $sms);
print_r($sms);

正如您在输出中看到的那样,$ sms是一个包含所有属性的数组。

答案 3 :(得分:0)

您可以使用 explode()函数来分隔数组中的值。

explode(Array_name);

答案 4 :(得分:0)

如果您从应用中发送适当的JSON,则可以使用$array = json_decode($data['sms']) 正确的JSON字符串看起来像[["+16063934284", "hello", 1, 1372671157000]] 请注意,“而不是'(引用vs撇号)对于JSON格式很重要,对不起Kristian Vitozev。另请注意,如果SMS消息包含逗号,则使用”on“爆炸将会中断。

这是一个代码示例:

$sms_list = json_decode($data['sms']);
foreach($sms_list as $sms){
    list($phone_number, $message, $unknown_bool, $timestamp) = $sms;
    //...
}