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

时间:2010-07-21 21:02:00

标签: php javascript string json arrays

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

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

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

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

我的脚本正面和背面都在工作,但是我对阵列(字符串)感到难过...... 如何解析,分割或拆分此结果?

4 个答案:

答案 0 :(得分:5)

如果你在调用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中的数组。

答案 1 :(得分:2)

我可能会先尝试使用正则表达式。

之类的东西
var match = data.match(/\{"(.+)"\:"([^,]+),(.+)"\}/);

括号将分开匹配。 match[0]将是整个事情,match[1]将是方法名称,match[2]将是id,match[3]将余数作为字符串。然后你可以做

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

获取第3部分的数组。

答案 2 :(得分:0)

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

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",...] 

答案 3 :(得分:0)

你走了:

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();

Here is a JSFiddle让你跑。