3v4l.org

run code in 300+ PHP versions simultaneously
<?php function isItEnd($array){ return !array_key_exists('ancestors', $array); } function getThirdFromEnd($category){ if(!isItEnd($category)){ $away_from_parent = getThirdFromEnd($category['ancestors']['BrowseNode']); if($away_from_parent == 0){ $away_from_parent = $category['ancestors']['BrowseNode']; } else { $away_from_parent--; } } else { $away_from_parent = 2; } return $away_from_parent; } $category = array( "BrowseNodeId" => "11256", "name"=> "Folklore & Mythology", "ancestors" => array( "BrowseNode" => array( "BrowseNodeId" => "11232", "name"=> "Social Sciences", "ancestors" => array( "BrowseNode" => array( "BrowseNodeId" => "3377866011", "name"=> "Politics & Social Sciences", "ancestors" => array( "BrowseNode" => array( "BrowseNodeId" => "1000", "name"=> "Subjects", "IsCategoryRoot" => true, "ancestors" => array( "BrowseNode" => array( "BrowseNodeId" => "283155", "name"=> "Books", ), ), ), ), ), ), ), ), ); $cat = getThirdFromEnd($category); echo "<pre>" . print_r($cat, 1) . "</pre>";
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
Fatal error: Uncaught TypeError: Cannot decrement array in /in/SeKvM:13 Stack trace: #0 /in/SeKvM(51): getThirdFromEnd(Array) #1 {main} thrown in /in/SeKvM on line 13
Process exited with code 255.
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
<pre>Array ( [BrowseNodeId] => 3377866011 [name] => Politics & Social Sciences [ancestors] => Array ( [BrowseNode] => Array ( [BrowseNodeId] => 1000 [name] => Subjects [IsCategoryRoot] => 1 [ancestors] => Array ( [BrowseNode] => Array ( [BrowseNodeId] => 283155 [name] => Books ) ) ) ) ) </pre>

preferences:
236.78 ms | 404 KiB | 335 Q