3v4l.org

run code in 300+ PHP versions simultaneously
<?php $resultset = [ // query just once, collect the full tree ["ID" => 1, "Name" => "News", "Father" => 0], ["ID" => 2, "Name" => "Articles", "Father" => 0], ["ID" => 3, "Name" => "Politics", "Father" => 1], ["ID" => 4, "Name" => "Politics", "Father" => 2], ["ID" => 5, "Name" => "World", "Father" => 3], ["ID" => 6, "Name" => "World", "Father" => 4] ]; $path = "/News/Politics/World"; // $path = "/Articles/The Funnies/Garfield"; // a test case that fails // News: parent = 0, id = 1 // \ // Politics: parent = 1, id = 3 // > the intended logic // World: parent = 3, id = 5 // / $cfg['categories_separator'] = "/"; $breadcrumbs = explode($cfg['categories_separator'], trim($path, "/")); // var_export($breadcrumbs); // see what is generated $parent = 0; // default value foreach ($breadcrumbs as $crumb) { $id = false; // set invalid value for success check foreach ($resultset as $row) { if ($row["Name"] == $crumb && $parent == $row["Father"]) { // qualifying match $id = $parent = $row["ID"]; // dual declaration break; // break inner loop, progress to next $crumb } } if (!$id) { // inner loop failed to find qualifying match echo "Uh-oh, Broken Breadcrumb Path -- $crumb not found in $path\n"; break; // break outer loop, path is invalid } // echo "ID = $id for $crumb\n"; // uncomment to see progress } echo "ID = $id for $crumb\n"; // echo the result
Output for git.master, git.master_jit, rfc.property-hooks
ID = 5 for World

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
26.84 ms | 405 KiB | 5 Q