Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 注意:带开关的数组中存在未定义的偏移错误_Php_Arrays_Switch Statement - Fatal编程技术网

Php 注意:带开关的数组中存在未定义的偏移错误

Php 注意:带开关的数组中存在未定义的偏移错误,php,arrays,switch-statement,Php,Arrays,Switch Statement,这是我的PHP代码,用于选择菜单。 这是错误的工作,请帮助我 代码 <?php $page_url = array(); $page_url[0]= "/bookslibrary.net/index.php"; $page_url[1]= "/bookslibrary.net/about.php";

这是我的PHP代码,用于选择菜单。 这是错误的工作,请帮助我

代码

<?php
                            $page_url = array();
                            $page_url[0]= "/bookslibrary.net/index.php";
                            $page_url[1]= "/bookslibrary.net/about.php";
                            $page_url[2]= "#";
                            $page_url[3]= "/bookslibrary.net/become-member.php";
                            $page_url[4]= "#";
                            $page_url[5]= "/bookslibrary.net/contact.php";

                            $page_urlActive = array();
                            $css_active = "class='active'";

                            switch ($_SERVER['PHP_SELF'])
                            {
                                case $page_url[0]: $page_urlActive[0] = $css_active; break;
                                case $page_url[1]: $page_urlActive[1] = $css_active; break;
                                case $page_url[2]: $page_urlActive[2] = $css_active; break;
                                case $page_url[3]: $page_urlActive[3] = $css_active; break;
                                case $page_url[4]: $page_urlActive[4] = $css_active; break;
                                case $page_url[5]: $page_urlActive[5] = $css_active; break;
                            } echo ("
                                <li $page_urlActive[0] ><a href='".$page_url[0]."'>Home</a></li>
                                <li $page_urlActive[1] ><a href='".$page_url[1]."'>About</a></li>
                                <li $page_urlActive[2] ><a href='".$page_url[2]."'>Books of the Month</a></li>
                                <li $page_urlActive[3] ><a href='".$page_url[3]."'>Become a Member</a></li>
                                <li $page_urlActive[4] ><a href='".$page_url[4]."'>Ahlus-Sunnah</a>
                                    <ul>
                                        <li><a href='#'>Web Directory</a></li>
                                        <li><a href='#'>Add Your Website</a></li>
                                    </ul>
                                </li>
                                <li $page_urlActive[5] ><a href='".$page_url[5]."'>Contact</a></li>
                            ");
                        ?>

问题在于,
$page\u urlActive
的特定索引(0-5)可能无法根据活动页面进行设置

更好的方法是重构代码,在
$page\u url
数组上循环。如果当前
$page\u url
等于请求的页面,则在循环内进行测试。如果是,则输出相应的
属性。这将删除大量不必要的代码(例如,
开关
$page\u urlActive


虽然我提倡干净的代码,但归根结底,这只是一个通知,而不是一个硬错误。

您的
$page\u urlActive
只包含一个项目,其键取决于您所在的页面。如果您试图回显所有索引的元素,则可以通过使用所有索引初始化数组来消除此通知:

$page_urlActive = array_fill(0, 6, '');

没有第34行。在发布代码和行引用时,请做一些突出显示行的操作。就像代码注释一样。第34行是:您是否检查了
$page\u urlActive[1]
是否已实际设置?问题已根据您的建议解决。