У меня есть функция, которая содержит массив, который затем json_encoded, отправляет массив json в базу данных и извлекает результаты оттуда. Мне нужно сделать рекурсивный массив. Внутри массива есть вложенные массивы, и мне нужно вытащить некоторые значения. Вот мой код:Как сделать вложенные массивы рекурсивно возвращать определенные значения?
function attDir($attId){
//$request = "{"Service":"webphone+","type":"attuid","criteria":"$attId","output":"partial","depth":"1"}";
$arrRe = array();
//Assoc array
$arrRe['Service'] = "webphone+";
$arrRe['type'] = "attuid";
$arrRe['criteria'] = "$attId";
$arrRe['output'] = "partial";
$arrRe['depth'] = "all"; //Shows everyone that reports under this ID. "1" will show direct reports.
$request = json_encode($arrRe);
//echo $request;
$fp = fsockopen("loadbalancer.web.att.com", 5862);
if (! $fp)
{
echo "Failed connection: \n";
}
else
{
fwrite($fp, "$request\n");
fwrite($fp, "end\n"); // required so SJ knows this is the end of the request
echo "Sending $request <br />";
$result = array();
while (! feof($fp)) //while NOT end of file
{
$line = rtrim(fgets($fp, 1024000)); //remove white space from right side of a string fgets(file, length) fgets gets line from file pointer
if ($line == "end") //if line = 'end' stop the program
{
break;
}
$result[] = $line;
}
$decoded = json_decode($result[1], true); //json array decoded results
print "<pre>";
print_r($decoded); //print out results from json array
print "</pre>";
foreach ( $decoded as $attuid => $arrLvl1)
{
//print_r($attuid);
if ($attuid != "sub")
{
//echo "LV1: $attuid\n";
echo "Attuid: ". $arrLvl1['a1'] . "<br />";
echo "F_Name: ". $arrLvl1['givenName'] . "<br />";
echo "L_Name: ". $arrLvl1['sn'] . "<br />";
}
else
{
foreach ($arrLvl1 as $key1 => $arrLvl2)
{
//echo $attuid;
echo " Attuid: ". $arrLvl2['a1'] . "<br />";
echo " F_Name: ". $arrLvl2['givenName'] . "<br />";
echo " L_Name: ". $arrLvl2['sn'] . "<br />";
//echo " Sub: ". $arrLvl2['sub'] . "<br />";
}
}
}
}
Это напечатает идентификатор, имя и фамилию для ключей внутри массива, но только два уровня вниз. Как я могу сделать эту рекурсивную систему так, чтобы она просматривала все уровни внутри вложенных массивов? Это то, что я получаю в качестве выхода:
Attuid: pr127r
F_Name: PATRICIA
L_Name: Райли
Attuid: fb2747
F_Name: FRED
L_Name: BAUER
Attuid: hp8813
F_Name: HELEN
L_Name: ПЕРЕЦ
Attuid: rg0137
F_Name: РОБЕРТ
L_Name: GRIFFITH
Attuid: ss942h
F_Name: STACI
L_Name: САЙТО