לפני 10 חודשים

@אדם
אתה צריך להשתמש עם פונקציה רקורסיבית (שקוראת לעצמה שוב ושוב)
הקוד שצירפת מאוד לא מובן ולא קריא
מצו"ב קוד שעושה את העבודה עם פונקציה רקורסיבית
(קח בחשבון שריצה על מערכת עם 200 שלוחות פירושה 200 קריאות API)

<?php

$did = $_REQUEST['did'];
$pass = $_REQUEST['pass'];
if ($did == null || $pass == null) {
    print "error";
    exit();
} else {
    $paths = [];
    $path_start = 'ivr2:/';
    get_paths_of_dir($did, $pass, $path_start, $paths);

    print_r($paths);
}


function get_paths_of_dir($did, $pass, $dir, &$paths)
{
    $json = file_get_contents("https://www.call2all.co.il/ym/api/GetIVR2Dir?token={$did}:{$pass}&path=$dir");
    $data = json_decode($json, true);
    $dirs = $data['dirs'];
    if ($dirs) {
        foreach ($dirs as $dir) {
            $path = $dir['what'];
            $paths[] = $path;
            get_paths_of_dir($did, $pass, $path, $paths);
        }
    }
}