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 数组