我正在开发一个 cakephp 2.x,我正在将数据从 android 发送到我的 webapp 中的 json fromat
当我print_r数据时,我在我的$data变量中获取数据
大批 ( [短信] => [[+16063934284,你好,1,1372671157000]] )
我想访问这个数组的每个元素,或者想将每个元素保存在一个单独的变量中。例如,我想做这样的事情
$number = ['sms'][0]
抱歉,我在数组中度过了一周,所以我该怎么做
我正在开发一个 cakephp 2.x,我正在将数据从 android 发送到我的 webapp 中的 json fromat
当我print_r数据时,我在我的$data变量中获取数据
大批 ( [短信] => [[+16063934284,你好,1,1372671157000]] )
我想访问这个数组的每个元素,或者想将每个元素保存在一个单独的变量中。例如,我想做这样的事情
$number = ['sms'][0]
抱歉,我在数组中度过了一周,所以我该怎么做
这不是有效的 JSON,如果您的响应是这样的:
[短信] => [[ '+16063934284', '你好', 1, 1372671157000 ]]
现在您可以使用json_decode
functon,那么您将拥有以下内容:
Array
(
[0] => Array
(
[0] => 16063934284
[1] => 123
[2] => 1
[3] => 1372671157000
)
)
所以以后,你可以用它foreach()
来遍历新数组的元素。
这是一个工作示例:
我不知道您是如何构建数据的,但您应该能够将其分配给这样的列表:
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);
}
你里面$data['sms']
的json数据不是正确的json。您需要手动解析此字符串或在您的 Android 应用程序中生成正确的 json。如果要解析数据,请使用以下代码:
$sms = str_replace('[[', '', $data['sms']);
$sms = str_replace(']]', '', $sms);
$sms = explode(', ', $sms);
print_r($sms);
正如您在输出中看到的,$sms 是一个包含所有属性的数组。
您可以使用explode()函数来分隔数组中的值。
explode(Array_name);
如果您从应用程序发送正确的 JSON,您可以简单地使用$array = json_decode($data['sms'])
正确的 JSON 字符串将如下所示[["+16063934284", "hello", 1, 1372671157000]]
注意“而不是 '(引号与撇号)对 JSON 格式很重要,抱歉 Kristian Vitozev。还请注意,在 ' 上使用爆炸, ' 如果 SMS 消息包含逗号,则会中断。
这是一个代码示例:
$sms_list = json_decode($data['sms']);
foreach($sms_list as $sms){
list($phone_number, $message, $unknown_bool, $timestamp) = $sms;
//...
}