0

私はこのような配列を持っています:

array(
  0 => array(
    'name' => 'colors',
    'options' => array(
      array('name'=>'red', 'price'=>'2'),
      array('name'=>'blue', 'price'=>'3')
    )
  ),
  1 => array(
    'name' => 'sizes',
    'options' => array(
      array('name'=>'small', 'price'=>'5'),
      array('name'=>'large', 'price'=>'10')
    )
  ),
);

ネストされたオプション配列の名前/価格をすべて 1 つにマージしたいので、次のようになります。

array(
  'red' => '2',
  'blue' => '3',
  'small' => '5',
  'large' => '10'
);

これは非常に単純な気がしますが、私がしようとすることは複雑すぎるようです. どんな助けでも大歓迎です。

...そして、はい、ほとんど同じ質問を少し前に投稿しました。これは少し違います。そもそも私が質問するつもりだったのですが、おっと、申し訳ありません。

4

4 に答える 4

1

衝突をどのように処理するかを決定する必要があります。とにかく、正しい方向を示す同じです:

$newArray = array();
foreach ($array as $i => $item)
    foreach ($item['options'] as $j => $option)
        $newArray[$option['name']] = $option['price'];
于 2013-11-12T23:13:19.973 に答える
0

ネストされた配列で「オプション」を繰り返し、新しい配列を作成します。

<?php
$arr = array(
  0 => array(
    'name' => 'colors',
    'options' => array(
      array('name'=>'red', 'price'=>'2'),
      array('name'=>'blue', 'price'=>'3')
    )
  ),
  1 => array(
    'name' => 'sizes',
    'options' => array(
      array('name'=>'small', 'price'=>'5'),
      array('name'=>'large', 'price'=>'10')
    )
  ),
);

$group = array();
foreach($arr as $a){
    foreach($a['options'] as $op){        
        $group[$op['name']] = $op['price'];        
}
}

print_r($group);

?>
于 2013-11-14T06:27:01.180 に答える