嵌套循环与数组的关联数组,不获取任何输出(PHP)
提前感谢您的关注 我正在尝试使用带有几层数组的foreach循环来构建一些HTML 数据组和该数据的标题组存储在一组数组中。 反过来,这些数据数组存储在一个数组中(嵌套循环与数组的关联数组,不获取任何输出(PHP),php,arrays,loops,Php,Arrays,Loops,提前感谢您的关注 我正在尝试使用带有几层数组的foreach循环来构建一些HTML 数据组和该数据的标题组存储在一组数组中。 反过来,这些数据数组存储在一个数组中($titlegroups和数据组) 其目的是建立一个嵌套循环,其中每组数据和标题填充一些html中的相关字段 下面是我尝试的一整套代码(结构) $a=1; $b=2; $c=3; $d=4; $titlesA=array('string1','string2'); $titlesB=array('string3','string4
$titlegroups
和数据组
)
其目的是建立一个嵌套循环,其中每组数据和标题填充一些html中的相关字段
下面是我尝试的一整套代码(结构)
$a=1;
$b=2;
$c=3;
$d=4;
$titlesA=array('string1','string2');
$titlesB=array('string3','string4');
$dataA=array($a,$b);
$dataB=array($c,$d);
$titlegroups=array($titlesA,$titlesB);
$datagroups=array($dataA,$dataB);
$groups=array(array_combine($titlegroups, $datagroups));
$j=0;
foreach($groups as $titlesX => $dataX)
{
$j++;
echo'<div class="something">';
$i=0;
foreach(array_combine($titlesX, $dataX) as $title => $var)
{
$i++;
echo '
<li>'.$title.'</li><input name="'.$j.'x'.$i.'" value="'.$var.'" />
';
}
echo '</div>';
}
但是$titlesX和$dataX都应该是数组吗
如果有人能纠正我的错误,我将不胜感激。谢谢。您不能将数组作为键,它们被转换为字符串。您的逻辑需要一些更改和一个额外的sentinel变量(
$idx
),以告知代码何时从一个组传递到另一个组
由于阵列的关键要求,array\u merge
是必要的
检查以下代码:
$a=1;
$b=2;
$c=3;
$d=4;
$titlesA=array('string1','string2');
$titlesB=array('string3','string4');
$dataA=array($a,$b);
$dataB=array($c,$d);
$titlegroups=array_merge($titlesA,$titlesB);
$datagroups=array_merge($dataA,$dataB);
$items=array_combine($titlegroups, $datagroups);
$indexes = array(count($dataA), count($dataB));
$i = 0;
$j = 0;
$idx = $indexes[$j];
echo '<div class="something">';
foreach($items as $title => $var)
{
echo '
<li>'.$title.'</li><input name="'.$j.'x'.($i++).'" value="'.$var.'" />
';
$idx--;
if ($idx == 0) {
/* End of a group */
echo '</div>';
$idx = $indexes[++$j];
/* If there is another group, create new container */
if ($idx != null) {
echo '<div class="something">';
}
}
}
$a=1;
$b=2;
$c=3;
$d=4;
$titlesA=数组('string1','string2');
$titlesB=数组('string3','string4');
$dataA=数组($a,$b);
$dataB=数组($c,$d);
$titlegroups=array\u merge($titlesA,$titlesB);
$datagroups=array\u merge($dataA,$dataB);
$items=array\u combine($titlegroups,$datagroups);
$index=array(count($dataA),count($dataB));
$i=0;
$j=0;
$idx=$index[$j];
回声';
foreach($title=>$var的项目)
{
回声'
“.$title。”
';
$idx--;
如果($idx==0){
/*小组结束*/
回声';
$idx=$index[+$j];
/*如果存在其他组,请创建新容器*/
如果($idx!=null){
回声';
}
}
}
非常感谢-我已经做了调整,但似乎没有解决核心问题。啊,你的编辑解释得很好,谢谢。我会研究一下,然后做些改变。嗨。用最少的代码更改来解决原始问题带来了一个学习主题:数组键(馈送到array\u combine
)有要求(不能是数组)。即使有一个不那么“可读”的工作代码,我们也学到了一些东西。我能看到你(迟到)的愤怒,但看不到你的动机。但这毕竟是一个言论自由的网站。。。
$a=1;
$b=2;
$c=3;
$d=4;
$titlesA=array('string1','string2');
$titlesB=array('string3','string4');
$dataA=array($a,$b);
$dataB=array($c,$d);
$titlegroups=array_merge($titlesA,$titlesB);
$datagroups=array_merge($dataA,$dataB);
$items=array_combine($titlegroups, $datagroups);
$indexes = array(count($dataA), count($dataB));
$i = 0;
$j = 0;
$idx = $indexes[$j];
echo '<div class="something">';
foreach($items as $title => $var)
{
echo '
<li>'.$title.'</li><input name="'.$j.'x'.($i++).'" value="'.$var.'" />
';
$idx--;
if ($idx == 0) {
/* End of a group */
echo '</div>';
$idx = $indexes[++$j];
/* If there is another group, create new container */
if ($idx != null) {
echo '<div class="something">';
}
}
}