我正在开发一个cakephp 2.x,我正在通过json fromat将数据从android发送到我的webapp
当我 print_r 数据时,我在 $ data 变量中获取数据
Array ( [sms] => [[+16063934284, hello, 1, 1372671157000]] )
我想访问这个数组的每个元素,或者想要将每个元素保存在一个单独的变量中......比如我想做这样的事情
$number = ['sms'][0]
抱歉,我在阵列中这一周所以不知道我怎么能这样做
答案 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;
//...
}