我正在寻找一种用函数式编程方法替换嵌套foreach循环的方法。情况是这样的:
$mode[1] = [1, 2, 5, 6];
$mode[0] = [3, 4, 7, 8];
目前我的代码是这样的:
foreach ($mode as $key=>$value):
foreach ($value as $v):
$modes[$v] = $key;
endforeach;
endforeach;
echo '<pre>' . print_r($modes, 1) . '</pre>';
这将生成如下所示的输出:
有谁知道如何用函数式编程替代方案替换foreach代码块?
我会使用array_fill_keys创建模式数组,然后将它们合并为一个:
$modes = array_fill_keys($mode[1], 1) + array_fill_keys($mode[0], 0);
为了易读性,你可以把它分成多行,但这应该能让你有个概念。
另外:如果您不清楚$mode
的内容,您可以进一步抽象代码:
$modes = [];
foreach ($mode as $key => $value) {
$modes += array_fill_keys($value, $key);
}
我认为< code>array_walk()与Union运算符合作,并且< code>array_fill_keys()似乎是完成此任务的理想选择:
代码:(演示)
$mode[1]=[1, 2, 5, 6];
$mode[0]=[3, 4, 7, 8];
$result=[]; // declare empty array so that union operator works
array_walk($mode,function($a,$k)use(&$result){$result+=array_fill_keys($a,$k);});
var_export($result);
输出:
array (
1 => 1,
2 => 1,
5 => 1,
6 => 1,
3 => 0,
4 => 0,
7 => 0,
8 => 0,
)
你可以用array_map()
来做到这一点
array_map(function($key, $value) use (&$modes) {
array_map(function($v) use (&$modes) {
$modes[$v] = $key;
}, $value);
}, array_keys($mode), array_values($mode));
我不知道你为什么要这样做,foreach
版本对我来说似乎更清晰。
我有一个这样的数组 我想做的是前面的模型,为其数量绘制徽标,因此三星=3,索尼=7,以此类推,将绘制3个索尼徽标和7个三星徽标。 我想出了这样的办法 但是当然,所有这些都是为了每个数组条目,呼应出名称,所以我最终打印了5个三星,打印了5个索尼,等等。 如何使其使用 qty 数组的值而不是条目数?
这是我的代码。我遇到的问题是,我希望将HP在我的PHP代码中的数字转换为我的HP HTML代码,以及与Cylinder相同的内容。我已经想好了其他的东西,但说到这一部分我就卡住了
我的代码有一个问题,它有两个嵌套的foreach循环: 所以我在“消息”中有2个条目,在“评论”中有4个条目,第一个条目为“消息”,第二个条目为2。我想要: 消息1-评论1-评论2 消息2-注释3-注释4 这就是我所拥有的: 消息1-评论1-评论2 消息2-注释1-注释2-注释3-注释4 我搜索了两个小时,在mysqli中没有找到解决方案:((当我找到时 mysqli_data_seek($com
问题内容: 我有一段代码,但是我想提高性能。我的代码是: matrix2是4维np数组,而matrix1是2d数组。 我想通过使用np.tensordot(matrix1,matrix2)加快此代码的速度,但是后来我迷路了。 问题答案: 您可以只使用jit编译器 您的解决方案一点也不差。我唯一更改的是索引和变量循环范围。如果您有numpy数组和过多的循环,则可以使用编译器(Numba),这确实很简
问题内容: 我正在尝试使用flatmap与Stream API进行嵌套循环,但似乎无法弄清楚。作为示例,我想重新创建以下循环: 我可以这样做,但这看起来很丑: Flatmap看起来很有希望,但是如何在外循环中访问变量? 输出: 问题答案: 您必须在阶段中创建所需的元素,例如:
数据库表: 胶片(id\U胶片主键,名称) 流派(id_genrePK,名称) film_genre(id_filmFK,id_genreFK) 这将输出流派表中的所有流派: 这将输出特定电影的电影类型表中的所有选定类型: 我有一个问题,从数据库输出数据到多个选定的列表中的形式。这是一个电影数据库,我正在进行Foreach迭代,以读取电影流派的所有行,并输出到多个选择字段。但是我在向列表输出“选定