PHP,Laravel:从 JSON 中消除特定的复杂数组

Posted

技术标签:

【中文标题】PHP,Laravel:从 JSON 中消除特定的复杂数组【英文标题】:PHP, Laravel: Eliminate Specific Complex Array from JSON 【发布时间】:2021-04-08 04:21:59 【问题描述】:

我目前正在为我的项目使用 Laravel 开发一个 API,概念:

    mysql 检索 JSON 数据。 从前端接收用户输入(字符串)。 将 JSON 和字符串输入转换为具有相似结构的数组。这里的数组结构基本是["ObjectA", "ObjectA_quantity", "ObjectB", "ObjectB_quantity", ...]。 基本上,根据User Input's Array得到的每个对象,剔除Database's Array中每个对象的数量。例如,如果数据库的数组得到["pizza", "1", "burger", "2"],而用户输入的数组得到["pizza", "1"],则该方法的输出预期为["burger", "2"]

我开发的方法会给出不一致和令人困惑的输出,例如对于某些对象,它运行良好,对于其他对象,它不会消除任何东西,如果用户输入的数组太大(> 1 个对象),它也不会t消除任何东西。我真的很欢迎不同的方法或任何其他可以提供上述预期输出的方法。非常感谢

这是我开发的方法的源代码:(方法位于:else if ($transactionGetter->type == 'return'),第 148 行等)

https://github.com/andre-nk23/packme-backend/blob/master/app/Http/Controllers/API/TransactionController.php

【问题讨论】:

【参考方案1】:

如果是 JSON,则必须在访问前解码值

$transactionGetter=json_decode($transactionGetter);

【讨论】:

是的,如果您阅读了源代码,我已经对 JSON 进行了解码和编码,并且运行良好,但是有一些错误,我不明白为什么会发生这种情况 我已经在上面提到过,该程序仅在某些对象上运行良好。例如,我要消除的数组是:[“Pizza”,“2”,Burger,“1”] 和用户输入:[“Pizza”,2],对于这种情况,它可以工作([”汉堡”,“1”])。但是对于其他情况,如果用户输入让说 ["Burger', "1"],则该数组根本不会被消除。因此,它适用于某个数组元素,但不适用于另一个。同样当用户输入数组太长,不行。

以上是关于PHP,Laravel:从 JSON 中消除特定的复杂数组的主要内容,如果未能解决你的问题,请参考以下文章

为啥将数据从 php 发送到 javascript (Laravel) 时进行 json 编码?

Laravel 5:从 $request 中检索 JSON 数组

如何在laravel中选择特定列

从函数中检索 JSON 和 PHP 值

从数据库中检索特定行并显示特定行中的所有数据并使用 php 发送 json

如何使用 php 从 json 获取特定的电子邮件数据