代码之家  ›  专栏  ›  技术社区  ›  user6631314

php/mysql:访问字典数组中的数据

  •  1
  • user6631314  · 技术社区  · 6 年前

    我从iphone接收到一个json流,它包含一些简单的字符串和数字以及一系列字典。实际上,我想使用这些字典,将它们中的数据存储在单独的mysql记录中。

    要从json流访问字符串和数组,我使用以下命令:

    $jsonString = file_get_contents('php://input');
    $jsonArray = json_decode($jsonString, true);
    $authString = jsonArray['authstring'];
    $itemsArray =  $jsonArray['itemsArray'];
    

    这就是 itemsArray 在发送到服务器之前:

    itemsArray =     (
                    {
                lasttouchedstr = "2018-07-09 17:24:56";
                localiid = 6;
                iid = 0;
                title = "test";
                complete = 1;
                userid = 99;
                whenaddedstr = "2018-06-21 14:10:23";
            },
                    {
                lasttouchedstr = "2018-07-09 17:24:56";
                localiid = 37;
                iid = 0;
                title = "how about this";
                userid = 88;
                whenaddedstr = "2018-07-07 16:58:31";
            },
                    {
                lasttouchedstr = "2018-07-09 17:24:56";
                localiid = 38;
                iid = 0;
                title = reggiano;
                userid = 1;
                whenaddedstr = "2018-07-07 17:28:55";
            }
    

    等。

    我想我应该把这些字典放到一个关联数组中,以便保存它们。

    然而,我正在为如何引用和获取对象而挣扎。据我所知,下面的代码返回空值 $message 回来时是空的。

      $anitem = $jsonArray['itemsArray'][0];
    $message=$anitem;
        $title = $jsonArray['itemsArray'][0].[item];
    $message.=$title;
    

    有谁能建议使用正确的语法来获取这些项及其属性吗?

    提前谢谢你的建议。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Xorifelse    6 年前

    我觉得奇怪的是,人们把事物与字典联系在一起,而字典不过是一个多维数组。

    如果您可以读取json,您会看到变量将有一个包含每个条目的索引。

    对于php:

    foreach($jsonArray as $array){
      // note that $array is still an array:
    
      foreach($array as $v){
        echo "Hurray!: '$v'";
      }
    }
    

    如果它真的是一个对象(或者转换成一个对象),那么您只需要更改访问变量的方式(就像在任何其他语言中一样)。在php中,它将是:

    echo $jsonArray[0]->lasttouchedstr;
    

    或者是同一个循环:

    foreach($jsonArray as $v){
      echo $v->lasttouchedstr;
    }
    

    多维的?

    echo $jsonArray['itemsArray'][0][item]; // array
    echo $jsonArray->itemsArray[0][item]; // if items array is an actual array and jsonArray an object.
    

    大多数语言把写的东西 . 左边是一个物体。在php中,它被写成 -> 是的。