【问题标题】:Can I divide an array or string into multiple variables?我可以将一个数组或字符串分成多个变量吗?
【发布时间】:2011-03-19 05:53:22
【问题描述】:

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

我在这里:
我以这种格式取回我的数组...
{"MethodName":"ID,11|1|Item1,22|2|Item2,33|3|Item3"}

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

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

我的脚本的正面和背面都在工作,但我对数组(字符串)感到困惑...
如何解析、划分或拆分此结果?

【问题讨论】:

    标签: php javascript string json arrays


    【解决方案1】:

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

    【讨论】:

    • 这可能是最好的方法。但是,在我尝试之后,它并没有给我我需要的结果。在不同的情况下,它可能会更好地为我服务。谢谢。
    【解决方案2】:

    我可能会首先尝试正则表达式。像

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

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

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

    获取第三部分的数组。

    【讨论】:

    • 如此简单,它去除了多余的字符并按照我需要的方式分解。
    【解决方案3】:

    假设您的初始数组是 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",...] 
    

    【讨论】:

      【解决方案4】:

      给你:

      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 供你运行。

      【讨论】:

        猜你喜欢
        • 2015-08-06
        • 2019-05-01
        • 2015-04-18
        • 1970-01-01
        • 2018-03-03
        • 1970-01-01
        • 2020-01-22
        • 1970-01-01
        • 2011-03-10
        相关资源
        最近更新 更多