php - 在PHP中将两个不同长度的数组相乘?
问题描述
我有一个动态数组:
$variants = [
'color' => ['Blue', 'Red', 'Pink'],
'size' => ['X', 'S'],
... (maybe more elements like above or not)
];
我期望这个:
$result = [
0 => ['color' => 'Blue', 'size' => 'X'],
1 => ['color' => 'Blue', 'size' => 'S'],
2 => ['color' => 'Red', 'size' => 'X'],
3 => ['color' => 'Red', 'size' => 'S'],
4 => ['color' => 'Pink', 'size' => 'X'],
5 => ['color' => 'Pink', 'size' => 'S']
];
结果是所有数组长度的乘积。我已经搜索但尚未找到解决方案。希望任何人都可以提供帮助。非常感谢!
解决方案
一个让你想要的功能
function get_combinations($arrays) {
$result = array(array());
foreach ($arrays as $property => $property_values) {
$tmp = array();
foreach ($result as $result_item) {
foreach ($property_values as $property_value) {
$tmp[] = array_merge($result_item, array($property => $property_value));
}
}
$result = $tmp;
}
return $result;
}
$variants = [
'color' => ['Blue', 'Red', 'Pink'],
'size' => ['X', 'S']
];
$result = get_combinations($variants);
结果会如你所愿。
推荐阅读
- python - 如何嗅探数据包,修改然后发送
- mysql - MySQL/MariaDB JSON_EXTRACT 和 JSON_CONTAINS
- django - 未使用 ManyToManyField 定义的模型
- c# - 使用 XMLDocument C# xml 添加多个节点
- spring - Spring / JPA:保存具有关联实体的实体
- eclipse-scout - Eclipse Scout 用户登录
- r - r 基于标准合并
- javascript - Angular:如何构建与 ng serve 创建的文件相同的文件
- sqlite - 为什么尝试获取 SQLite 数据库连接时出现空引用异常?
- r - RScripting:在我的 xVec 和 yVec 中遇到的问题