从平面键数组和静态关联数组创建关联二维数组

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

我需要使用一个数组的值作为键以及一个新的列值来创建一个二维数组,并且每一行应该具有由另一个平面关联数组提供的多个关联元素。

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 multidimensional-array
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.