2017-05-30 78 views
0

我有一个foreach循环什么工作正常foreach循环,但我需要调用它在同一页内的几个时间,所以我想到了一个功能将更好地得到不同的结果,但我不断收到Warning: Invalid argument supplied for foreach()创建PHP函数里面

继承人的作品

$weaponSlot = '1'; 

$talentGridHash = $json2['Response']['data']['buckets']['Equippable'][''.$weaponSlot.'']['items']['0']['talentGridHash']; 

$nodes = $json2['Response']['data']['buckets']['Equippable'][''.$weaponSlot.'']['items']['0']['nodes']; 

foreach($nodes as $talentNode) { 
// Perform operations on each nodes... 

if($talentNode['isActivated'] && $talentNode['state'] === 10){ 
     $nodesActive[] = $talentNode; 

    $perkName = $json2['Response']['definitions']['talentGrids'][''.$talentGridHash.'']['nodes'][''.$talentNode['nodeHash'].'']['steps']['0']['nodeStepName']; 
    $perkIcon = $json2['Response']['definitions']['talentGrids'][''.$talentGridHash.'']['nodes'][''.$talentNode['nodeHash'].'']['steps']['0']['icon']; 

    if (strpos($perkName, 'Damage') == false) { 

$perkOutput .= '<div style="border:1px solid #999; border-radius:3px; padding:1px; float:left; margin-right:8px"><img src="http://www.example.com'.$perkIcon.'" height="22" title='.$perkName.'" /></div>'; 


    } 

} 

} 

echo $perkOutput; 

继承人的代码放到一个函数的代码...我错过了什么? (顺便说一句,这是第一次做香港专业教育学院的函数,在例子在网上看了)

$perkOutput = null; 
function getItemPerks($weaponSlot){ 

$talentGridHash = $json2['Response']['data']['buckets']['Equippable'][''.$weaponSlot.'']['items']['0']['talentGridHash']; 

$nodes = $json2['Response']['data']['buckets']['Equippable'][''.$weaponSlot.'']['items']['0']['nodes']; 

foreach($nodes as $talentNode) { 
// Perform operations on each nodes... 

if($talentNode['isActivated'] && $talentNode['state'] === 10){ 
     $nodesActive[] = $talentNode; 

    $perkName = $json2['Response']['definitions']['talentGrids'][''.$talentGridHash.'']['nodes'][''.$talentNode['nodeHash'].'']['steps']['0']['nodeStepName']; 
    $perkIcon = $json2['Response']['definitions']['talentGrids'][''.$talentGridHash.'']['nodes'][''.$talentNode['nodeHash'].'']['steps']['0']['icon']; 

    if (strpos($perkName, 'Damage') == false) { 

$perkOutput .= '<div style="border:1px solid #999; border-radius:3px; padding:1px; float:left; margin-right:8px"><img src="http://www.example.com'.$perkIcon.'" height="22" title='.$perkName.'" /></div>'; 

    } 

} 

} 

return $perkOutput; 

} 


getItemPerks(1); 

回答

2

$json2是不是在功能可用,因此$nodes是不确定的。您需要将其作为与$weaponSlot相同的参数传递。

function getItemPerks($weaponSlot, $json){ 
    $nodes = $json //etc... 
} 

然后调用:getItemPerks(1, $json2);

或者拨打电话到另一个功能这一项,其获取的JSON并返回一个数组中:

function getItemPerks($weaponSlot){ 
    $json = getJSON(); 
    $nodes = $json //etc... 
} 

function getJSON(){ 
    $json = //get your JSON somehow 
    return json_decode($json, true); 
} 

然后调用:getItemPerks(1);

PHP: Variable Scope