Php 从具有指定键的函数返回数组,并且它';s值

Php 从具有指定键的函数返回数组,并且它';s值,php,Php,从上面的函数中获取数组 function do_get_array() { $posts[] = array( 'name' => 'Page', 'icon' => 'fa fa-users', 'fields' => array( array( 'field_name' => 'Publishe

从上面的函数中获取数组

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;

} 
但它只返回第二个数组。 我希望它返回所有数组值和我提供的键。
事实上,我对php还不熟悉,这就是为什么我觉得我有些困惑

您每次都在覆盖。构建这些阵列的阵列:

$posts = do_get_array();
$return = array();
foreach ($posts as $post) {
    $return['name'] = $post['name'];
    $return['icon'] = $post['icon'];

}
print_r($return);
然而,这似乎是一种浪费,您可以直接使用
$posts
数组,它只是有一些额外的信息

如果确实希望名称作为数组索引,则:

foreach ($posts as $post) 
    $return[] = array('name' => $post['name'], 'icon' => $post['icon']);
}

因为在您的函数中,第二个$posts[]会覆盖第一个

尝试此操作以合并两个$posts[]:

$return[$post['name']] = $post['icon'];

您正在覆盖循环中的值:
$return['name']=…
。为什么需要新数组?
foreach($posts as$post){$return[]=['name'=>$post['name'],'icon'=>$post['icon']];}
但我希望它随键返回。这样地。数组([name]=>Page[icon]=>fa-fa-users)数组([name]=>Slideshow[icon]=>fa-fa-users)应该是
$return[]=['name'=>$post['name'],'icon'=>$post['icon']
$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);