php - 如何展平和输出两个多维数组并打印成对值的组合?
问题描述
我有 2 个输入数组:
$data1 = array (
0 => 0,
1 => array ( 0 => 4, 1 => 8, ),
2 => 0,
3 => array ( 0 => 2, 1 => 6, 2 => 10, ),
4 => array ( 0 => 1, 1 => 5, ),
5 => array ( 0 => 3, 1 => 7, 2 => 11, ),
)
$data2 = array (
0 => 0,
1 => array ( 0 => 1, 1 => 5, ),
2 => array ( 0 => 4, 1 => 8, ),
3 => 0,
)
从第一个数组读取叶节点时,我的意思是迭代第二个数组的所有叶节点并打印所有成对的组合。
我的麻烦是只$data1
打印子数组中的最后一个值,并且只打印最后一个值$data2
。
我的代码:
foreach ($data1 as $sourcevalue){
if( is_array($sourcevalue) == "1")
{
foreach ($sourcevalue as $value)
{
$source=$value;
}
}
else
{
$source=$sourcevalue;
}
foreach ($data2 as $endvalue){
if( is_array($endvalue) == "1")
{
foreach ($endvalue as $value1){
$end=$value1;
}
}
else
{
$end=$endvalue;
}
}
echo $source." ".$end."<br>";
}
我当前的输出:
0 0
8 0
0 0
10 0
5 0
11 0
期望的输出:
0 0
0 1
0 5
0 4
0 8
0 0
4 0
4 1
4 5
4 4
4 8
4 0
8 0
8 1
8 5
8 4
8 8
8 0
0 0
0 1
0 5
0 4
0 8
0 0
2 0
2 1
2 5
2 4
2 8
2 0
6 0
6 1
6 5
6 4
6 8
6 0
10 0
10 1
10 5
10 4
10 8
10 0
1 0
1 1
1 5
1 4
1 8
1 0
5 0
5 1
5 5
5 4
5 8
5 0
3 0
3 1
3 5
3 4
3 8
3 0
7 0
7 1
7 5
7 4
7 8
7 0
11 0
11 1
11 5
11 4
11 8
11 0
如何修改我的代码以显示所有组合?
解决方案
您也需要回显中间元素,而不仅仅是最后一个
foreach ($data1 as $sourcevalue){
if (is_array($sourcevalue)) {
foreach ($sourcevalue as $value) {
printData2($value);
}
} else {
printData2($sourcevalue);
}
}
function printData2($source) {
foreach ($data2 as $endvalue){
if (is_array($endvalue)){
foreach ($endvalue as $value1){
pr($source, $value1);
}
} else {
pr($source, $endvalue);
}
}
}
function pr($source, $end) {
echo "{$source} {$end}<br>";
}
推荐阅读
- python - keras.preprocessing.image imagedatagenerator flow from dataframe read error
- laravel - 如何在 laravel 中编写嵌套查询
- r - 安装包。“有非零退出状态”错误。“S3 方法”错误
- c++ - 如何正确写入多维字符数组未知数量的值但固定数量的字符
- r - 如何在 R 中使用代理 api
- c - c语言中的**(&d)是什么意思?
- mysql - 如何在MYSQL中将三个连接的表多次连接到第四个表
- javascript - 如何同时选择随机对象和随机选择对象的长度
- ruby - 。包括?读取txt文件时不触发
- sql - 有没有办法将两个表合并为一个,而每列都相同,只有 FK 是两个不同的表?