Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php foreach函数的抽象_Php_Foreach_Abstraction - Fatal编程技术网

Php foreach函数的抽象

Php foreach函数的抽象,php,foreach,abstraction,Php,Foreach,Abstraction,我已经使用foreach创建了一个函数来存储数组中的数据(在本例中为wordpress菜单项): 我在这里要做的是为每个菜单创建一个单独的函数,这不是很优雅,因为这些函数做同样的事情,只是使用不同的数组名 出于学习目的,我试图找到一种方法,将这个想法进一步抽象一个层次,以便只有一个函数可以做同样的事情,传递菜单id(“205”和“206”),检索菜单名,根据菜单名命名数组,然后执行上面的函数所做的操作 这怎么可能呢?您可以这样获取菜单: public function getMenu($menu

我已经使用foreach创建了一个函数来存储数组中的数据(在本例中为wordpress菜单项):

我在这里要做的是为每个菜单创建一个单独的函数,这不是很优雅,因为这些函数做同样的事情,只是使用不同的数组名

出于学习目的,我试图找到一种方法,将这个想法进一步抽象一个层次,以便只有一个函数可以做同样的事情,传递菜单id(“205”和“206”),检索菜单名,根据菜单名命名数组,然后执行上面的函数所做的操作


这怎么可能呢?

您可以这样获取菜单:

public function getMenu($menuId, $fieldName)
{
    $array_menu = wp_get_nav_menu_items($menuId);
    $menu = array();
    foreach ($array_menu as $m) {
        if (empty($m->menu_item_parent)) {
            $menu[$m->ID] = array();
            $menu[$m->ID]['ID']          =   $m->ID;
            $menu[$m->ID]['title']       =   $m->title;
            $menu[$m->ID]['url']         =   $m->url;
            $menu[$m->ID]['postid']      =   get_post_meta( $m->ID, '_menu_item_object_id', true );
            $menu[$m->ID]['icon']        =   get_field($fieldName, get_post_meta( $m->ID, '_menu_item_object_id', true ));
        }
    }
    $this_menu = wp_get_nav_menu_object($menuId);
    $menu['menu_title'] = $this_menu->name;

    return $menu;
}

$beratungmenu = getMenu("205", "fa_icon_name");
$institutmenu = getMenu("206", "fa_icon_name_institut");

您已经描述了如何实现这一点。现在编写一些代码。
public function getMenu($menuId, $fieldName)
{
    $array_menu = wp_get_nav_menu_items($menuId);
    $menu = array();
    foreach ($array_menu as $m) {
        if (empty($m->menu_item_parent)) {
            $menu[$m->ID] = array();
            $menu[$m->ID]['ID']          =   $m->ID;
            $menu[$m->ID]['title']       =   $m->title;
            $menu[$m->ID]['url']         =   $m->url;
            $menu[$m->ID]['postid']      =   get_post_meta( $m->ID, '_menu_item_object_id', true );
            $menu[$m->ID]['icon']        =   get_field($fieldName, get_post_meta( $m->ID, '_menu_item_object_id', true ));
        }
    }
    $this_menu = wp_get_nav_menu_object($menuId);
    $menu['menu_title'] = $this_menu->name;

    return $menu;
}

$beratungmenu = getMenu("205", "fa_icon_name");
$institutmenu = getMenu("206", "fa_icon_name_institut");