我想使用 foreach 获取数组的结果。但是我得到的只是 1 个数组,即使在使用 Foreach 之前,有 9 个数组。 如何从我下面列出的 9 个数组的结果中获取字符串?
我使用 PHP 7.0 版和 Laravel 5.0 框架。 $paramsUserId 将填充特定的 user_id,例如“10729”
private function itemNotReco($paramsUserId = null)
{
try{
$result = DB::connection('read')->table('recommendation_events')
->where('user_id', $paramsUserId);
if ($result) {
$result = $result->distinct()->get(['item_id']);
}
foreach ($result as $re){
$re = $re->item_id;
}
return $re;
} catch (\Exception $e) {
$log = ['Service' => 'RecommendationEventService', 'function' => 'getItemNotRecommendation'];
logError($e, $log);
}
}
结果(使用 Postman):
"77178"
下面是我在没有使用 foreach 的情况下使用如下代码得到的 9 个数组的结果
private function itemNotReco($paramsUserId = null)
{
try{
$result = DB::connection('read')->table('recommendation_events')
->where('user_id', $paramsUserId);
if ($result) {
$result = $result->distinct()->get(['item_id']);
}
return array_column($result, 'item_id');
} catch (\Exception $e) {
$log = ['Service' => 'RecommendationEventService', 'function' => 'getItemNotRecommendation'];
logError($e, $log);
}
}
结果:
array:9 [
0 => 77196
1 => 77263
2 => 77202
3 => 77262
4 => 77275
5 => 77259
6 => 77345
7 => 77329
8 => 77178
]
我想要的结果是这样的(使用Postman)
"77196", "77263", "77202", "77262", "77275", "77259", "77345", "77329", "77345", "77329", "77178"
最佳答案
它只会返回 1 个数据,因为 return
在第一个循环中停止。有两种方法可以解决您的问题:
1. 使用 echo
而不是 return
。
2. 像这样将数据存储在新变量中:
private function itemNotReco($paramsUserId = null)
{
try{
$result = DB::connection('read')->table('recommendation_events')
->where('user_id', $paramsUserId);
if ($result) {
$result = $result->distinct()->get(['item_id']);
}
$data = [];
foreach ($result as $re){
$data[] = $re->item_id;
}
return $data;
} catch (\Exception $e) {
$log = ['Service' => 'RecommendationEventService', 'function' => 'getItemNotRecommendation'];
logError($e, $log);
}
}
关于php - 如何从 PHP 中的数组中获取字符串 (Foreach),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602920/