PHP中合并两个数组并整合foreach遍历操作的实现问题
解决数组合并与遍历的问题
看起来你遇到的核心问题是两个数组的元素类型不统一——$digits是普通数值数组,而$results是包含数据库对象的数组(每个元素都带userName属性),直接用array_merge合并后没法统一处理数字和对象,加上代码里还写错了变量名($dogrularVeSiklar应该是$combined),才导致方案失效。
下面是可行的解决步骤:
1. 先把数据库结果转换成普通字符串数组
我们需要从$results的对象中提取出userName的值,转换成纯字符串数组,这样就能和$digits的类型统一:
// 从对象数组中提取userName字段,生成普通字符串数组 $userNameList = array_map(function($result) { return $result->userName; }, $results);
2. 合并数组并遍历输出
现在两个数组都是普通标量数组了,就可以正常合并、去重(如果需要)和遍历:
$digits = [1,2,3,4]; // 合并数值数组和用户名数组 $combined = array_merge($digits, $userNameList); // 去重(不需要的话可以去掉array_unique)并遍历输出 foreach (array_unique($combined) as $item) { echo $item . '<br>'; }
补充:为什么原来的方法无效?
$results里的元素是对象,直接echo对象会输出Object或者报错(取决于PHP配置),无法正确显示用户名;- 代码里误用了未定义的变量
$dogrularVeSiklar,正确变量名应该是$combined; array_merge虽然能合并对象数组和普通数组,但合并后的数组同时包含数字和对象,遍历处理时无法统一输出内容。
内容的提问来源于stack exchange,提问作者Prox
相关产品推荐
相关产品推荐

