[英]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.