2
$products = array(
  'paper' => "Paper Section" => array
  (
    'copier' => "Copier and Multipurpose",
    'inkjet' => "Inkjet Printer",
  ),
  'pens' => "Pen Section" => array
  (
    'ball' => "Ballpoint Pens",
    'hilite' => "Highlighters"
  ),
  'misc' => "Miscellaneous Section" => array
  (
    'tape' => "Sticky Tape",
    'glue' => "Adhesive"
  )
);

echo "<pre>";
foreach ($products as $section => $items)
  foreach ($items as $key => $value)
    echo "$section:\t$key\t($value)<br />";
echo "</pre>";

私がここでやろうとしていることは明らかに、インデックスを $section セットに割り当てることですが、それを行おうとするとエラーが発生します。それを行う別の方法はありますか、それともPHPでは不可能ですか?

4

6 に答える 6

9
$products = array(
  'paper' => array(
    'title' => "Paper Section",
    'copier' => "Copier and Multipurpose",
    'inkjet' => "Inkjet Printer"
  )
);   

たとえば、上記のようなもの。別のオプションは、別のディメンションを追加することです。

$products = array(
  'paper' => array(
    'meta' => array(
        'title' => "Paper Section"
    ),
    'data' => array(
        'copier' => "Copier and Multipurpose",
        'inkjet' => "Inkjet Printer"
    )
  )
);
于 2011-06-22T06:53:55.923 に答える
1

あなたが何を達成しようとしているのか本当に理解していませんが、それでも試してみます。以下に、データを再構築しました。

$products = array(
  'paper' => array(
    'Paper Section',
    array (
      'copier' => "Copier and Multipurpose",
      'inkjet' => "Inkjet Printer"
    )
  ),
  'pens' => array(
    'Pen Section',
    array (
      'ball' => "Ballpoint Pens",
      'hilite' => "Highlighters"
    )
  ),
  'misc' => array(
    'Miscellaneous Section',
    array (
      'tape' => "Sticky Tape",
      'glue' => "Adhesive"
    )
  )
);

foreach ($products as $sectionKey => $line) {
  foreach ($line[1] as $key => $value) {
    echo $sectionKey . ":\t" . $line[0] . ":\t$key\t($value)\n";
  }
}

Ideoneでデモを見ることができます。

于 2011-06-22T06:57:26.197 に答える
1
    $products = array(
      'paper' => array(
        "Paper Section" => array
          (
            'copier' => "Copier and Multipurpose",
            'inkjet' => "Inkjet Printer",
          )
       ),
      'pens' => array(
        "Pen Section" => array
        (
            'ball' => "Ballpoint Pens",
            'hilite' => "Highlighters"
          ),
      ),
      'misc' => array(
        "Miscellaneous Section" => array
        (
            'tape' => "Sticky Tape",
            'glue' => "Adhesive"
          )
      )
);

他の人が述べたように、ラップを別の連想配列に入れる必要があります。

ただし、最も深い連想配列を一度に 2 つのキーに割り当てようとしているように感じます。その場合、PHP の配列宣言ではそれを行うことができません。次のように、もう少し手動で行う必要があります。

$products = array();
$products['Misc'] = $products['Miscellaneous Section'] = array(
      'tape' => "Sticky Tape",
      'glue' => "Adhesive"
);

var_dump($products);
于 2011-06-22T07:01:20.160 に答える
1

まあ、あなたがやろうとしていることは私には明らかではありませんが、あなたの構文は間違っています: 配列は'key'=>'value'キーと値のペアであるため、 のように構築されます。

'paper' => "Paper Section" => array()

key->value->value. それはうまくいきません。

また:

echo "
";

次の可能性があります。

echo "\n";
于 2011-06-22T07:01:26.603 に答える
1

やりたいことは、配列内の別の次元です。そして、それがあなたの問題の解決策です。

于 2011-06-22T06:51:46.373 に答える
1
<?php
$products = array(
    'paper' => array(
    // --------^^^^^
        'Paper Section' => array(
            'copier' => 'Copier and Multipurpose',
            'inkjet' => 'Inkjet Printer',
        ),
    )
);
var_dump($products);

PS: コードをより適切にフォーマット (およびインデント) すると、より簡単になります。

于 2011-06-22T06:53:07.507 に答える