【发布时间】:2016-02-19 07:28:22
【问题描述】:
我有一个函数,它保存一个数组,然后是 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 />";
}
}
}
}
这将打印出数组内键的 ID、名字和姓氏,但仅向下两层。我将如何使这个递归,以便它查找嵌套数组中的所有级别?这是我得到的输出:
属性:pr127r
F_Name: 帕特里夏
L_姓名:莱利
登录号:fb2747
F_Name:弗雷德
L_Name: BAUER
属性:hp8813
F_Name: 海伦
L_Name: PEPPER
属性:rg0137
F_Name:罗伯特
L_姓名:格里菲斯
属性:ss942h
F_Name: STACI
L_Name: 斋藤
【问题讨论】:
标签: php arrays recursion multidimensional-array foreach