php 数组合并/合并

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

嗨所有 stackoverflow 成员,请帮助我解决有关数组操作的问题。

stores_array:  
Array
(
    [0] => store1
    [1] =>store2
)  

items_array:  
Array  
(  
  [electronics]=>led tv  
  [cosmetics]=>eyeliner  
  [fruits]=>apple 
  [vegetables]=>cabbage  
)  

这是我到目前为止所拥有的:

$new_array = array();
  foreach($stores_array as $t) {
      $new_array[$t] = $items_array;
  }

    echo '<pre>';
    print_r($new_array);  
    echo '<pre/>';  

这是输出:

Array
(
[store1] => Array
    (
      [electronics]=>led tv  
      [cosmetics]=>eyeliner  
      [fruits]=>apple 
      [vegetables]=>cabbage  
    )  
[store2] => Array
    (
      [electronics]=>led tv  
      [cosmetics]=>eyeliner  
      [fruits]=>apple 
      [vegetables]=>cabbage  
    )

)  

这就是我想要实现的目标:
我想在每个数组中添加一些其他值。
请参阅我打算添加的箭头。

Array
(
[store1] => Array
    (
      [electronics]=>led tv  
      [cosmetics]=>eyeliner  
      [fruits]=>apple 
      [vegetables]=>cabbage
      [store]=>store1  <------- how can i add these?
    )  
[store2] => Array
    (
      [electronics]=>led tv  
      [cosmetics]=>eyeliner  
      [fruits]=>apple 
      [vegetables]=>cabbage 
      [store]=>store2  <------- how can i add these?
    )

)  

提前谢谢大家..

php arrays
6个回答
1
投票

试试这个:

$new_array = array();
foreach($stores_array as $t) {
    $new_array[$t] = $items_array;
    $new_array[$t]["store"]=$t;
}

echo '<pre>';
print_r($new_array);  
echo '<pre/>';

0
投票
foreach (array_keys($my_array) as $key) {
    $my_array[$key]['store'] = $key;
}

0
投票

如果我理解问题的话,这应该相对容易。 试试这个:

$new_array = array();
foreach($stores_array as $t) {
    $new_array[$t] = $items_array;
    $new_array['store'] = $t;
}

0
投票

您只需将值添加到数组末尾即可。

  $new_array = array();

  foreach($stores_array as $t) {
      $items_array[] = $t;
      $new_array[$t] = $items_array;
  }

无论如何,如果您只是想以某种方式检索密钥,则无需将其存储在任何地方,您始终可以使用

key($array)

访问它

您的情况:

foreach($new_array as $data){
    echo key($data);
}

您可以在

PHP 文档
找到有关 key 函数的更多信息。


0
投票

正如 Marc B 所说,这是一种冗余数据,但这是我的答案:

$new_array = array();

foreach($stores_array as $t) {
    $new_array[$t] = $items_array;
    $new_array[$t]['store'] = $t;
}

0
投票

对于函数式方法,使用

array_reduce()
声明关联键,同时从静态和动态数据填充行。 演示

var_export(
    array_reduce(
        $stores,
        fn($result, $s) => $result + [$s => $items + ['store' => $s]],
        []
    )
);

输出:

array (
  'store1' => 
  array (
    'electronics' => 'led tv',
    'cosmetics' => 'eyeliner',
    'fruits' => 'apple',
    'vegetables' => 'cabbage',
    'store' => 'store1',
  ),
  'store2' => 
  array (
    'electronics' => 'led tv',
    'cosmetics' => 'eyeliner',
    'fruits' => 'apple',
    'vegetables' => 'cabbage',
    'store' => 'store2',
  ),
)
© www.soinside.com 2019 - 2024. All rights reserved.