繁体   English   中英

我可以将数组或字符串分成多个变量吗?

[英]Can I divide an array or string into multiple variables?

这是我去过的地方:
我通过肥皂进行了PHP客户端调用,以检索数据数组,
我成功接收并通过json_encode将数组转换为JSON,
然后,我将其回显到我的页面。

这是我的位置:
我以这种格式取回阵列...
{ “方法名”: “ID,11 | 1 | Item1,22 | 2 | Item2,33 | 3 |项目3”}

这是我想成为的地方:
使用Javascript或JSON,我的目标是最终得到2个变量(方法和ID)和一个变量数组(ItemList)...即

  • var Method =“ MethodName”;
  • var ID =“ ID”;
  • var ItemList = ['11 | 1 | Item1','22 | 2 | Item2','33 | 3 | Item3'];

我的脚本的前面和后面都在工作,但是我迷住了array(string)...
如何解析,划分或拆分此结果?

如果在调用json_encode之前将它作为php中的混合数组使用,那么您自己会变得更加简单(这样,不是字符串,每个项目都是它自己的JSON对象)。

例:

$arr = array();
$itemList = array();
$itemList[1] = "11|1";
$itemList[2] = "22|2";
$itemList[3] = "33|3";

$arr['Method']="MethodName";
$arr['ID']= "ID";
$arr['itemList'] = $itemList;

$output = json_encode($arr);

这导致$output具有以下JSON:

{"Method":"MethodName","ID":"ID","itemList":{"1":"11|1","2":"22|2","3":"33|3"}}

由于itemList已经是JSON中的数组,因此您可以轻松地将其取出。

我可能会尝试正则表达式的第一件事。 就像是

var match = data.match(/\{"(.+)"\:"([^,]+),(.+)"\}/);

括号将分隔匹配项。 match[0]将是整个对象, match[1]将是方法名称, match[2]将是id, match[3]将是其余的字符串。 你可以做

var itemList = match[3].split(',');

得到第三部分的数组。

假设您的初始数组是带有值{“ MethodName”:“ ID,11 | 1 | Item1,22 | 2 | Item2,33 | 3 | Item3”}的initial_array

for (key in initial_array) {  
  Method = key;                     // Method = "MethodName"
  break;
}
myvalue = initial_array[Method];
myarray = myvalue.split(",");      // myarray = ["ID","11|1|Item1",...]
ID = myarray[0];                   // ID = "ID"
ItemList = myarray.splice(1);      // ItemList = ["11|1|Item1","22|2|Item2",...] 

干得好:

var myobject = {"MethodName":"ID,11|1|Item1,22|2|Item2,33|3|Item3"};
var itemlist = [];
var method;
var ID;

for (key in myobject) { 
    method = key;
    break;
}

itemlist = myobject[method].split(',');
ID = itemlist.shift();

这是供您运行的JSFiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM