0

我试图从函数中取出 $keysList 数组,但似乎在某个地方出错了。我收到错误:

Passed Notice: Uninitialized string offset: 2 in C:\web\apache\htdocs\dev\case2.php on line 40 Notice: Uninitialized string offset: 1 in C:\web\apache\htdocs\dev\case2.php on line 40 Notice: Uninitialized string offset: 0 in C:\web\apache\htdocs\dev\case2.php on line 40 Output = a , a and a .

如何做到这一点?

<?php

$catHandle = "addCat";

function validCatKeys($catHandle,$keysList)
{

    switch($catHandle){

    case "addCat":

            $listCountryCode = 'US';
            $listUserName    = 'Norman';
            $listUserId      = '1';
            $keysList        = array($listCountryCode,$listUserName,$listUserId);
            return true;
        break;

    case "addSubCat":

        break;

    case "addElm":

        break;

    default:
       return false;
    }


}



if(validCatKeys($catHandle,$keysList = ''))
{

    echo 'Passed';
    list($a, $b, $c) = $keysList;
    echo "Output =  a $a, a $b and a $c.";

}else{echo 'Failed';
}



?>
4

3 回答 3

1
function validCatKeys($catHandle,$keysList)
{

    switch($catHandle){

    case "addCat":

            $listCountryCode = 'US';
            $listUserName    = 'Norman';
            $listUserId      = '1';
            $keysList        = array($listCountryCode,$listUserName,$listUserId);
            return $keysList;
        break;
    ....
于 2013-05-01T08:22:36.950 回答
1

请尝试下面的代码它的工作演示http://codepad.viper-7.com/2Eyym1 该数组$keyList是局部变量并且具有局部范围,因此声明它global可以工作。

<?php
    $catHandle = "addCat";

    function validCatKeys($catHandle,$keysList)
    {
        global $keysList;

        switch($catHandle){

        case "addCat":

                $listCountryCode = 'US';
                $listUserName    = 'Norman';
                $listUserId      = '1';
                $keysList        = array($listCountryCode,$listUserName,$listUserId);
                return true;
            break;

        case "addSubCat":

            break;

        case "addElm":

            break;

        default:
           return false;
        }


    }



    if(validCatKeys($catHandle,$keysList = array()))
    {

        echo 'Passed';
        list($a, $b, $c) = $keysList;
        echo "Output =  a $a, a $b and a $c.";

    }else{echo 'Failed';
    }
于 2013-05-01T08:24:38.030 回答
1

$keysList在函数定义中定义通过引用传递的变量:

function validCatKeys($catHandle,&$keysList)

(注意&

这将使对$keysList变量的任何内部更改在函数外部可用。

于 2013-05-01T08:25:50.300 回答