0

我有以下数组(由explode方法创建)

["3D Printing"," 3D Architecture"," .NET Micro Framework"]

当我尝试将此标题与我的数据库匹配并获取每个标题的 id 时,我只得到第一个项目的 id。

["d21c6805-8780-4726-ba1d-12c9c3a28d0a"]

它应该返回这样的东西

["d21c6805-8780-4726-ba1d-12c9c3a28d0a", "1234...", "567...]

code

$a = $request->input('tags');
$b = str_replace(['[',']'], null, $a);
$comingTags = explode(',',$b);

$iddss = Tag::whereIn('title', $comingTags)->pluck('id');
return response()->json($iddss);

有什么建议吗?

PS:我最好的猜测是我的数组中的第 2 项和第 3 项有空格,这可能会导致问题"{SPACE IS HERE}3D Architecture" ,不确定是否是这个原因。

更新

我试过$b = str_replace([',', ' '], ['',''], $a);了,但我现在得到的只是[]

更新 2

通过使用$b = str_replace(['[', ']', ' '], null, $a);它确实删除了我的字符串中的空格,但也删除了我的标题单词之间的空格,因此3D Architecture3DArchitecture也无法将标题与我的数据库匹配,$iddss = Tag::whereIn('title', $comingTags)->pluck('id');因为我的数据库标题是3D Architecture我想要匹配的内容它是3DArchitecture

对此有什么建议吗?

更新 3

$a = $request->input('tags');
// return 
"[3D Printing, 3D Architecture, .NET Micro Framework]"

.

$b = str_replace(['[',']'], null, $a);
// return
"3D Printing, 3D Architecture, .NET Micro Framework"

.

$comingTags = explode(',',$b);
// return
["3D Printing"," 3D Architecture"," .NET Micro Framework"]
4

1 回答 1

1

要摆脱空白,你可以做 array_map('trim', $a);​​学分

whereIn需要一个数组,所以这应该有效

$a = $request->input('tags');
$b = str_replace(['[',']'], null, $a);
$comingTags = array_map('trim', explode(',', $b));

$iddss = Tag::whereIn('title', $comingTags)->pluck('id');

return response()->json($iddss);
于 2021-04-20T09:13:31.460 回答