使用第一个数组中的值作为第二个数组中的变量

问题描述 投票:0回答:1

我正在处理表的两行,每行都有基于单独数组的嵌套 foreach 循环。 我希望能够从第一行生成一个可用于第二行的值。 查看下面的数据,我希望能够访问 3、1 和 2 的值,并在第二个数据数组中使用这些值(以确定列宽)。

这是第一个数据数组,用于第 1 行:

Array
(
[Nov 18, 2011] => Array
    (
        [C] => 3
        [I] => 1
    )
[Nov 22, 2011] => Array
    (
        [C] => 2
    )
)

这是第二个数据数组,用于第 2 行:

Array
(
[Nov 18, 2011] => Array
    (
        [C] => 107705.5792
        [I] => 44561.52
    )
[Nov 22, 2011] => Array
    (
        [C] => -8992.8352
    )
)

这是两行的当前表结构:

<tr> <!-- ROW 1 -->
<th>f1</th>
<td>f1</td>
<?php foreach($array1 as $a1) { ?>
     <?php foreach ($a1 as $k=>$v) { ?>        
        <td colspan=<?php echo $v ?>>
            <?php echo ($k."_".$v) ?>
        </td>
     <?php } ?>           
<?php } ?>
</tr>
<tr> <!-- ROW 2 -->
<th>f2</th>
<td>f2</td>
<?php foreach($array2 as $a1) { ?>
     <?php foreach ($a1 as $k=>$v) { ?>        
        <td>
            <?php echo ($k."_".$v) ?>
        </td>
     <?php } ?>           
<?php } ?>
</tr>

我认为需要发生的是两个数组需要以某种方式组合。 我的数据需要这种结构:

[C] => 107705.5792 - needs to have column width of 3 
[I] => 44561.52 - needs to have column width of 1  
[C] => -8992.8352 - needs to have column width of 2

我希望我已经解释得足够清楚了。 感谢您提供的任何帮助。

php multidimensional-array foreach
1个回答
1
投票

您可以将第一个数组中的每个条目与第二个数组中的条目组合在一起作为具有两个值的数组:

$combined = $first;
foreach($combined as $date => $vs)
{
    foreach($vs as $k => &$v)
    {
       $v = array($v, $second[$date][$k]);
    }
}
unset($v);

然后您可以像这样访问这两个值:

list($a, $b) = $combined['Nov 22, 2011']['C'];
// $a: 2
// $b: -8992.8352

用途:

...
<tr> <!-- ROW 2 -->
<th>f2</th>
<td>f2</td>
<?php foreach($combined as $dates) { ?>
     <?php foreach ($dates as $date=>$v)
           {
               list($colspan, $value) = $v;
     ?>
        <td colspan=<?php echo $colspan; ?>>
            <?php echo ($date."_".$value) ?>
        </td>
     <?php } ?>           
<?php } ?>
</tr>
© www.soinside.com 2019 - 2024. All rights reserved.