2017-05-30 63 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