Php 重新声明函数错误

Php 重新声明函数错误,php,Php,我有一个重新声明的问题,我只是想了解为什么有人能启发我 这是我的密码 function createAdminPage($dialarg,$topsnamearg,$shortnamearg) { global $dial; $dial = $dialarg; global $topsname; $topsname = $topsnamearg; global $topname; $topname = "Top ".$dial; globa

我有一个重新声明的问题,我只是想了解为什么有人能启发我

这是我的密码

function createAdminPage($dialarg,$topsnamearg,$shortnamearg) {
    global $dial;
    $dial = $dialarg;
    global $topsname;
    $topsname = $topsnamearg;
    global $topname;
    $topname = "Top ".$dial;
    global $shortname;
    $shortname = $shortnamearg;

    function createArrays($i){
    global $shortname;
        $arr = array (
            "name" => "Canción ".$i,
            "desc" => "Escriba el nombre de la canción ".$i,
            "autor" => "Autor ".$i,
            "desc_autor" => "Escriba el Nombre del Autor ".$i,
            "id" => $shortname."cancicon_".$i,
            "va_autor" => $shortname."autor_".$i,
            "type" => "text",
            "std" => "");
        return $arr;
    }

    global $options;
    $options = array (
        array("name" => "Top ".$dial, "type" => "title"),
        array( "type" => "open"),
        createArrays(1),
        createArrays(2),
        createArrays(3),
        createArrays(4),
        createArrays(5),
        createArrays(6),
        createArrays(7),
        createArrays(8),
        createArrays(9),
        createArrays(10),
        array( "type" => "close")
    );
    function cl_add_admin() {         
        global $topname, $shortname, $options, $dial;        
        if ( $_GET['page'] == basename(__FILE__) ) {                 
            if ( 'save' == $_REQUEST['action'] ) {                      
                foreach ($options as $value) {
                    update_option( $value['id'], $_REQUEST[ $value['id'] ] );
                    update_option( $value['va_autor'], $_REQUEST[ $value['va_autor'] ] );

                    foreach ($options as $value) {
                        if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ]  ); } else { delete_option( $value['id'] ); }
                        if( isset( $_REQUEST[ $value['va_autor'] ] ) ) { update_option( $value['va_autor'], $_REQUEST[ $value['va_autor'] ]  ); } else { delete_option( $value['va_autor'] ); }

                    }

                    header("Location: themes.php?page=functions.php&saved=true");
                    die;                         
                }
            } else if ( 'reset' == $_REQUEST['action'] ) {                          
                foreach ($options as $value) {
                    delete_option( $value['id'] ); 
                    delete_option( $value['va_autor'] ); 
                }

                header("Location: themes.php?page=functions.php&reset=true");
                die;
            }
        }

        add_menu_page($topname, 'Tops Circuito Lider', 'edit_themes', $dial.'-handle', 'cl_admin');
        add_submenu_page($dial.'-handle', $topname, $topname, 'edit_themes', $dial.'sub-handle', 'cl_admin');

    }
    function cl_add_init() {  
        $file_dir=get_bloginfo('template_directory');  
        wp_enqueue_style("functions", $file_dir."/functions/options_panel.css", false, "1.0", "all");  
    } 

    function cl_admin() {    
        global $topname, $shortname, $options;

        //echo $topname;
        //print_r($options);

        if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$topname.' settings saved.</strong></p></div>';
        if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$topname.' settings reset.</strong></p></div>';

        ?>
            <div class="wrap">
            <h2>Configurar <?php echo $topname; ?></h2>

            <form method="post">

            <?php     

        foreach ($options as $value) {
            switch ( $value['type'] ) {

            case "open":
            ?>
                <table width="100%" border="0" style="background-color:#cdcdcd; padding:10px;">

            <?php break;

            case "close":
            ?>

                </table><br />

            <?php break;

            case "title":
            ?>
                <table width="100%" border="0" style="background-color:#868686; padding:5px 10px;"><tr>
                <td colspan="2"><h3 style="font-family:Georgia,'Times New Roman',Times,serif;"><?php echo $value['name']; ?></h3></td>
                </tr>

            <?php break;

            case 'text':
            //echo "begins";
            ?>
                <tr>
                <td width="20%" rowspan="2" valign="middle">
                    <strong><?php echo $value['name']; ?></strong>
                    <br />
                    <strong><?php echo $value['autor']; ?></strong>
                </td>
                <td width="80%">
                    <input style="width:400px;" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php     if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?>" /><br />
                    <small><?php echo $value['desc']; ?></small>
                    <br />
                    <input style="width:400px;" name="<?php echo $value['va_autor']?>" id="<?php echo $value['va_autor']?>" type="<?php echo $value['type']; ?>" value="<?php     if ( get_settings( $value['va_autor'] ) != "") { echo get_settings( $value['va_autor'] ); } else { echo $value['std']; } ?>" /><br />
                    <small><?php echo $value['desc_autor']; ?></small>
                </td>
                </tr>

                <tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;">&nbsp;</td></tr><tr><td colspan="2">&nbsp;</td></tr>

                <?php

                break;
            }
        //echo "after break";
        }
    ?>
         <style type="text/css" />
         .submit {
        display:inline;
        width:200px;
        }
        </style>
        <p class="submit">
        <input name="save" type="submit" value="Guardar" />
        <input type="hidden" name="action" value="save" />
        </p>
        <p class="submit">
        <input name="reset" type="submit" value="Borrar todos" />
        <input type="hidden" name="action" value="reset" />
        </p>
        </form>
        </div>
    <?php
    }
    add_action('admin_menu', 'cl_add_admin');
    add_action('admin_init', 'cl_add_init');
}

您正在调用
createAdminPage()
两次:

createAdminPage("923","Lider 92.3 FM","cl_923");
createAdminPage("931","Romance 93.1 FM","cl_931");
这会导致再次声明内部函数,因为这是每次调用函数时实际运行的内容:

function createAdminPage($dialarg,$topsnamearg,$shortnamearg) {
    function createArrays($i){
    ...
    function cl_add_admin() {
    ...
    function cl_add_init() {  
    ...
    function cl_admin() {
}
因此出现了重新声明错误


您应该将文件移出
createAdminPage()
函数(但将它们保留在include文件中),这样您就可以在不引起重新声明的情况下调用它。

在其他函数中有函数声明,因此每次调用外部函数时,都会重新声明这些内部声明的函数,你得到了错误


只需将这些函数移出createAdminPage()函数。

问题是,我确实希望再次使用它们:S但值不同,这就是为什么参数不同,如果我将其从createAdminPage函数中取出,我将无法使用不同值重用代码:(只是澄清一下,因为我需要使用代码3次,但变量值不同,如果我将其从函数中取出并包含3次,我将得到相同的错误,这就是我想要重用代码的意思。:)对不起,有没有办法
包含一次()
而不是
包含()
?问题是我确实想再次使用它们:S但具有不同的值,这就是为什么参数不同,如果我将其从函数createAdminPage ho中取出,我将无法重用具有不同值的代码:(只是澄清一下,因为我需要使用代码3次,但变量值不同,如果我将其从函数中取出并包含3次,我将得到相同的错误,这就是我想要重用代码的意思。:)对不起
function createAdminPage($dialarg,$topsnamearg,$shortnamearg) {
    function createArrays($i){
    ...
    function cl_add_admin() {
    ...
    function cl_add_init() {  
    ...
    function cl_admin() {
}