【发布时间】:2021-06-28 20:05:32
【问题描述】:
我想用数组匹配字符串。我正在从数据库中的状态表中检索状态代码...我有一个带有代码和名称的 json 文件...根据从 db 返回的状态代码,我需要在 json 文件中匹配此代码并在其中显示状态名称前锋
请大家帮忙
谢谢
状态码数组
[
{
"code":"0",
"name":"AB"
},
{
"code":"1",
"name":"CD"
},
{
"code":"2",
"name":"XY"
},
{
"code":"10",
"name":"EF"
},
{
"code":"12",
"name":"FG"
}
]
<?php $findproducts = \DB::table('status')->select('id', 'status_name', 'ab', 'status_code','created_at')->where('ab', $track->ab)->orderBy('id', 'DESC')->get(); ?>
字符串位置....
@foreach($findproducts as $pr)
@if($statuscodes != null)
@foreach ($statuscodes as $stcode)
@if (strpos($pr->status_code, $stcode['code']) !== FALSE)
{{ $stcode['name']." " .$stcode['code'] }}
@endif
@endforeach
@endif
@endforeach
我从上面得到的输出是
CD 1 XY 2 FG 12
CD 1 AB 0 EF 10
XY 2
光盘 1
AB 0
预期输出应为
FG 12
英孚 10
XY 2
光盘 1
AB 0
【问题讨论】:
-
你可以把
orderBy('id', 'DESC')改成orderBy('code', 'DESC')吗? -
@Johannes 我试过了,但我得到了相同的输出
-
您的外循环正在循环所有产品,因此如果第一个产品的状态码为
1、2和12,它将输出这些。如果我正确地得到了您的预期输出,您想输出statuscodes数组元素而不是产品,对吗? -
@Johannes 是的,完全正确......如果代码是 12,我只想打印状态名称 FG 就是这样......但它循环通过 1 和下一个 2,然后是 12,这是错误的
-
我很困惑你为什么要这么做
strpos($pr->status_code, $stcode['code'])。你能解释一下你想做什么,因为我无法理解你的例子......你真正想做什么?还有你用的是什么版本的PHP?
标签: php arrays laravel laravel-4