如何访问两个存储数组的全局变量并按指定格式输出内容?
问题解决:PHP生成器输出数组元素未达预期
你的代码里,生成器直接yield了整个数组变量,当你echo $items时,PHP会将数组转换为字符串"Array"输出,自然得不到预期的"12345abcde"。以下是两种可行的修复方案:
方案一:修改生成器,逐个yield数组元素
这种方式让生成器每次返回单个元素,直接echo就能拼接出目标字符串:
$number = [1,2,3,4,5]; $str = ["a", "b", "c", "d", "e"]; function twoMassive(){ $names = ["number", "str"]; foreach($names as $items){ // 遍历全局数组的每个元素,逐个yield foreach($GLOBALS[$items] as $element){ yield $element; } } }; foreach(twoMassive() as $items){ echo $items; }
方案二:保持生成器不变,消费时处理数组
如果需要生成器返回完整数组,可在遍历生成器结果时,用implode()将数组转为字符串输出:
$number = [1,2,3,4,5]; $str = ["a", "b", "c", "d", "e"]; function twoMassive(){ $names = ["number", "str"]; foreach($names as $items){ yield $GLOBALS[$items]; } }; foreach(twoMassive() as $items){ // 将数组元素拼接成字符串输出 echo implode('', $items); }
内容的提问来源于stack exchange,提问作者Ice time
相关产品推荐
相关产品推荐

