如何使用foreach将数字设置为数组中的键值?

时间:2017-12-20 00:55:19

标签: php arrays for-loop grouping

我想在下面得到以下输出。我正在使用foreach执行以下操作,但它不打印数字。而不是得到'0','1'或'2',我得到一个空白''。

如何按预期打印数组?

cust_serv_circuit

期望的输出:

$results = array (
  array(
   'body' => 'somevalue1',
   'title' => 'somevalue1',
   'type' => 'foo'
  ),
  array(
    'body' => 'somevalue2',
    'title' => 'somevalue2',
    'type' => 'foo'
  ), 
  array(
    'body' => 'somevalue3',
    'title' => 'somevalue3',
    'type' => 'bar'
  ),
  array(
    'body' => 'somevalue4',
    'title' => 'somevalue4',
    'type' => 'foobar'
  ),
  array(
    'body' => 'somevalue5',
    'title' => 'somevalue5',
    'type' => 'foobar'
  ),
  array(
    'body' => 'somevalue6',
    'title' => 'somevalue6',
    'type' => 'foobar'
  ),
);

代码:

$values = array(
    'foo' => array(
        [0] => array(
            'body' => 'some value',
            'title' => 'some value'
         ),
         [1] => array(
             'body' => 'other value',
             'title' => 'other value'
         )
     ),
     'bar' => array(
        [0] => array(
            'body' => 'some value',
            'title' => 'some value'
         )
     ),
     'foobar' => array(
        [0] => array(
            'body' => 'some value',
            'title' => 'some value'
         ),
         [1] => array(
             'body' => 'other value',
             'title' => 'other value'
         ),
        [2] => array(
             'body' => 'other value',
             'title' => 'other value'
         )
     ),
);

当前问题:

  • $ values [$ row.type] [$ num] = $ temp;
  • $ num不保存'0','1'等,它将其保存为''

目标:

  • 将所有类型组合在一起。例如,对于type = foo,我想以一种我以后可以按类型打印它们的方式对它们进行分组。所以我想打印type = foo的所有元素,如果该分组数组中有许多元素,我希望能够通过'0','1','2'等访问它们。

1 个答案:

答案 0 :(得分:1)

您可以让php在迭代声明中使用[]自动索引数组。 array_slice()是使用键提取前两个元素的简洁方法,但如果您喜欢微优化,则可以全部输入。

代码:(Demo

foreach($results as $a){
    $output[$a['type']][]=array_slice($a,0,2);
    //or faster&more verbose: $output[$a['type']][]=['body'=>$a['body'],'title'=>$a['title']];
}
var_export($output);

输出:

array (
  'foo' => 
  array (
    0 => 
    array (
      'body' => 'somevalue1',
      'title' => 'somevalue1',
    ),
    1 => 
    array (
      'body' => 'somevalue2',
      'title' => 'somevalue2',
    ),
  ),
  'bar' => 
  array (
    0 => 
    array (
      'body' => 'somevalue3',
      'title' => 'somevalue3',
    ),
  ),
  'foobar' => 
  array (
    0 => 
    array (
      'body' => 'somevalue4',
      'title' => 'somevalue4',
    ),
    1 => 
    array (
      'body' => 'somevalue5',
      'title' => 'somevalue5',
    ),
    2 => 
    array (
      'body' => 'somevalue6',
      'title' => 'somevalue6',
    ),
  ),
)