我想在下面得到以下输出。我正在使用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'
)
),
);
当前问题:
目标:
答案 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',
),
),
)