0

ご覧いただきありがとうございます。

配列のいくつかのレイヤーを持つforeachループを使用してHTMLを構築しようとしています。

データのグループとそのデータのタイトルのグループは、配列のセットに格納されます。次に、これらのデータの配列は配列($titlegroupsおよびdatagroups)に格納されます。

ネストされたループを設定することを目的としています。ここでは、データとタイトルの各グループが、いくつかの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>';
    }

ideoneでチェックすると、エラーが発生します。

警告:array_combine()は、パラメーター1が配列であると想定しています。整数は26行目の/home/0zw0mb/prog.phpで指定されています

26行目は次のとおりです。

foreach(array_combine($titlesX, $dataX) as $title => $var)

しかし、$titlesXと$dataXは両方とも配列である必要がありますか?

誰かが私をまっすぐにすることができれば、私はそれをいただければ幸いです。ありがとう。

4

1 に答える 1

0

配列をキーとして使用することはできません。配列は文字列に変換されます。$idxコードが1つのグループから別のグループにいつ交差するかを通知するために、ロジックにはいくつかの変更と追加のセンチネル変数()が必要でした。

array_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">';
            }
        }
    }
于 2012-11-22T01:42:36.617 に答える