2013-05-01 95 views
0

我試圖從函數中獲取$ keysList數組,但似乎在某處出錯。我得到錯誤:從php函數內部返回數組無效

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'; 
} 



?> 
+0

重複問題? http://stackoverflow.com/questions/5692568/php-function-return-array – 2013-05-01 08:20:26

+0

@Al。但我的情況完全不同。 – Norman 2013-05-01 08:22:12

+0

@norman嘗試回答演示其工作。 – 2013-05-01 08:26:41

回答

1

定義$keysList變量引用在函數定義傳遞:

function validCatKeys($catHandle,&$keysList) 

(注意&

這將使得功能外到$keysList變量可用的任何內部改動。

+0

這也適用。使用&right是安全的嗎? – Norman 2013-05-01 08:31:48

1
function validCatKeys($catHandle,$keysList) 
{ 

    switch($catHandle){ 

    case "addCat": 

      $listCountryCode = 'US'; 
      $listUserName = 'Norman'; 
      $listUserId  = '1'; 
      $keysList  = array($listCountryCode,$listUserName,$listUserId); 
      return $keysList; 
     break; 
    .... 
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'; 
    } 
+0

是的。它的工作原理.. – Norman 2013-05-01 08:30:46