簡體   English   中英

數組值分配內部函數,但外部顯示為空

[英]array values assign inside function but shows empty outside

我在magento網站上工作,當數組值在函數內部分配並在函數外部檢索時遇到奇怪的錯誤。

//define array
$ctall=array();
//function for array value assign
function printtest($fg){
//global variable
    global $ctall;

    //just assign to array
    $ctall[rand(10000,100000)]=$fg; 

 //this var dump shows array with vaues  when function calling
//  var_dump($ctall);
}

我在另一個函數中在這里調用該函數

$categoryTree = Mage::getResourceModel('catalog/category')->getCategories($categoryId, 0, true);
$printCategories = function($nodes) use (&$printCategories) {

   foreach ($nodes as $_category):
      $ctdf=$_category->getId();
      $categoryn = Mage::getModel('catalog/category')->load($ctdf);
          if($ctdf!='' && $categoryn->getIsActive()):
                //here call to function by passing a value
                printtest($ctdf);   
          $printCategories($_category->getChildren());       
        endif; 
  endforeach; 


};


$printCategories($categoryTree);

//sleep(10);



// i try to get array results here but it shows empty
var_dump($ctall);

任何人都知道如何解決這個問題,我嘗試了幾個小時沒有運氣。 謝謝

刪除$ ctall的所有聲明,然后嘗試以下操作:

//remove define array, don't define it
// $ctall=array();

function printtest($fg){

    if(!isset($GLOBALS['ctall'])){
        $GLOBALS['ctall'] = array();
    }
    //assign to global
    $GLOBALS['ctall'][rand(10000,100000)]=$fg;
}

在外面,像這樣轉儲:

var_dump($GLOBALS['ctall'])

嘗試推送而不是分配。嘗試以下操作:

$ctall[][rand(10000,100000)]=$fg; //notice the empty square brackets

您也可以嘗試以下操作:

function printtest($fg){
  global $ctall;
  $new_array =array();
  $new_array[rand(10000,100000)] = $fg;
  array_merge($ctall, $new_array);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM