【问题标题】:Symfony - parse JSON to databaseSymfony - 将 JSON 解析到数据库
【发布时间】:2018-10-17 13:35:34
【问题描述】:

所以我返回 JSON 数据,现在我需要从我提供的图像中解析数据,以便将其发布到我的数据库中。

我需要对其进行解析,以便每个字母数字组合(A1、A2、A3 等)都可以位于单独的列行中...

 public function generateSeats(SeatMap $seatMap)
{
    $layout = $seatMap->getSeatLayout();

    $layoutArray = json_decode($layout, true);

    foreach($layoutArray as $result)
    {
        dump($result);die;
        }

}

我不知道如何单独选择每个字母数字组合。

【问题讨论】:

    标签: json api parsing


    【解决方案1】:

    没那么复杂。

    你只需要做两步:

    $result = 'A1A2A3_A4A5A6';
    

    1) 去掉下划线符号_:

    $result = str_replace('_', '', $result);
    // Now $result is string 'A1A2A3A4A5A6'
    

    2) 将整个字符串分成两个字符长:

    $result = str_split($result, 2);
    // Now $result is array('A1', 'A2', 'A3', 'A4', 'A5', 'A6')
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,也是为了 SO 的未来访问者。跨度>
    • 现在好点了吗?
    • 非常感谢!
    【解决方案2】:

    Sergej 的回答肯定能解决问题,而且很有用。我也投了赞成票。但是,它仍然无法处理以下问题:

    • 无效的座位号模式LetterNumber。例如:1A
    • 座位顺序无效。例如:1AA1A2A3A4A5A6AZ

    如果您使用简单的正则表达式并只考虑匹配的组,则无需进一步验证座位号。

    preg_match_all ('/[A-Za-z][0-9]/', '1AA1A2A3A4A5A6AZ', $matches);
    print_r($matches); 
    // output: Array([0]=>Array([0]=>A1[1]=>A2[2]=>A3[3]=> A4[4]=>A5[5]=>A6))
    

    【讨论】:

    • 所以这绝对解决了我的问题。非常感谢!只有一个问题.. 我怎样才能让 php 识别第二行以获取 B 字母而不是 A 等等?
    • 您不必这样做。您的 API 将返回您的行,此后不管它是哪一行。只有输入(排座位)会改变。其余部分将由正则表达式处理。如果我还没有理解你,请说明 API 如何返回行数据?就算返回A1A2B1B2,有什么问题?
    • 我对您为我提供的解决方案感到满意。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    相关资源
    最近更新 更多