2013-07-01 25 views
0

我是一个CakePHP的2.x的工作,我是来自机器人的JSON fromat我怎么能提取这个数组PHP或CakePHP的

我得到我的$数据数据将数据发送到我的web应用程序变量,当我的print_r数据

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

我想访问此数组的每个元素或要每个元素保存在一个单独的可变..例如,我想这样做

$number = ['sms'][0] 

抱歉,我在本周的阵列,所以不要我怎么办里面$data['sms']

+0

最有可能你都提交您的数据错了,不能正确解析它 - 在讨论的阵列的事情是(可能,很难说,因为没有引号)一个字符串。 – AD7six

回答

0

你的JSON数据是不正确的JSON。您需要手动解析此字符串或在您的Android应用程序中生成正确的json。 如果要分析你的数据使用下面的代码:

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

正如你在输出$短信看到的是与你的所有属性的数组。

+0

正在获取数据在JSON ..当我解码数据,然后我得到以下结果,我有我的问题。我应该再次解码 – hellosheikh

+0

是的,你shuold解码你的'$ data ['sms']' –

+0

我更新了我的答案。核实。 –

1

这不是有效的JSON,如果你的回答是这样的:

[短讯] => [ '16063934284', '你好',1,1372671157000]

现在你可以使用json_decode functon,这样,那么你将有以下:

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

) 

左右后,您可以使用foreach()通过个中的元素进行迭代新阵列。

这里是一个工作示例:

+0

我在json中获取数据..当我解码数据然后我得到以下结果,我有我的问题... – hellosheikh

+0

那么,json_decode($ data)的结果是什么? – vitozev

+0

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

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); 
} 
+0

你的代码给了我很多错误 – hellosheikh

+0

这是因为你不会逐字使用它。我不知道你的数据来自你的Android应用程序的格式。 –

0

可以使用爆炸()函数,将这些值在阵列分离。

explode(Array_name); 
0

如果从应用程序发送适当的JSON,你可以简单地使用$array = json_decode($data['sms']) 正确的JSON字符串看起来像[["+16063934284", "hello", 1, 1372671157000]] 注意“,而不是'(报价VS单引号)是JSON格式很重要,很抱歉Kristian Vitozev。另请注意,如果SMS消息包含逗号,则在','上使用爆炸将会中断。

这里是一个代码示例:

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