function do_get_array() {
$posts[] = array(
'name' => 'Page',
'icon' => 'fa fa-users',
'fields' => array(
array(
'field_name' => 'Publisher Logo',
'id' => 'pub_logo',
'type' => 'text',
),
),
);
$posts[] = array(
'name' => 'Slideshow',
'icon' => 'fa fa-users',
'fields' => array(
array(
'field_name' => 'Publisher Logo2',
'id' => 'pub_logob',
'type' => 'text',
),
),
);
return $posts;
}
从上面的函数中获取数组。
$posts = do_get_array();
$return = array();
foreach ($posts as $post) {
$return['name'] = $post['name'];
$return['icon'] = $post['icon'];
}
print_r($return);
但它只返回第二个数组。 我希望它使用我提供的密钥返回所有数组值。 我实际上是php的新手,这就是为什么我认为我有些困惑。
答案 0 :(得分:1)
你每次都在覆盖。构建这些数组的数组:
foreach ($posts as $post)
$return[] = array('name' => $post['name'], 'icon' => $post['icon']);
}
然而,这似乎是浪费,您可以按原样使用$posts
数组,它只是有一些额外的信息。
如果您确实希望将名称作为数组索引,那么:
$return[$post['name']] = $post['icon'];
答案 1 :(得分:0)
因为在你的函数中,第二个$ posts []覆盖了第一个。
尝试这个合并两个帖子[]:
<?php
function do_get_array() {
$posts1[] = array(
'name' => 'Page',
'icon' => 'fa fa-users',
'fields' => array(
array(
'field_name' => 'Publisher Logo',
'id' => 'pub_logo',
'type' => 'text',
),
),
);
$posts2[] = array(
'name' => 'Slideshow',
'icon' => 'fa fa-users',
'fields' => array(
array(
'field_name' => 'Publisher Logo2',
'id' => 'pub_logob',
'type' => 'text',
),
),
);
$result = array_merge($posts1, $posts2);
return $result;
}
$posts = do_get_array();
$return = array();
for($i=0; $i<count($posts); $i++){
$return[$i]['name'] = $posts[$i]['name'];
$return[$i]['icon'] = $posts[$i]['icon'];
}
print_r($return);