我使用php从LDAP查询中提取结果。结果数组中的一个项是具有3组信息的数组。如何让它显示所有三组而不仅仅是第一组?请参阅下面的代码:
if ($ds) { $ds=ldap_connect("ldap-server");
$r=ldap_bind($ds);
$sr=ldap_search($ds, "DC=,DC=co,DC=uk",$search);
$info = ldap_get_entries($ds, $sr)or die('get info fail');
$header = array(
t('Picture'),
t('First Name'),
t('Last Name'),
t('Role'),
t('Email')
);
$rows = array();
for ($i=0; $i<$info["count"]; $i++) {
//Handle Image
if(isset($info[$i]["jpegphoto"][0])){
$tempFile = tempnam(sys_get_temp_dir(), 'image');
file_put_contents($tempFile, $info[$i]["jpegphoto"][0]);
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime = explode(';', $finfo->file($tempFile));
$jpeg = '<img src="data:' . $mime[0] . ';base64,' . base64_encode($info[$i]["jpegphoto"][0]) . '"/>';
}else{
$path = drupal_get_path('module','search_engine');
$jpeg = '<img src="'.$path.'/images/userImage.jpg" />';
}
$rows[$i] = array(
'picture' => $jpeg,
'first' => $info[$i]["givenname"][0],
'last' => $info[$i]["sn"][0],
'role' => $info[$i]["memberof"][0],
'mail' => $info[$i]["mail"][0],
);
}
ldap_close($ds);
return theme('table', array('header'=>$header,'rows'=>$rows));
我在我的表格中显示图片,第一张,最后一张,角色和电子邮件。角色包含一个包含3个项目的数组,如何让它遍历数组中的每个项目?我知道我不能只把一个foreach扔到数组的中间。
我需要显示所有这些。
答案 0 :(得分:0)
如果您不需要对该子阵列中的各个角色执行任何操作,例如只显示它,然后只需将implode()
显示为字符串:
$rows[$i] = array(
...
'roles' => implode(',', $info[$i]['memberof'])
...
);
如果您确实需要对单个组件进行一些操作,请单独处理:
$rows[$i] = array(...normal non-array data here);
foreach($info[$i]['memberof'] as $key => $value) {
$rows[$i]['role'][$key] = $value;
}
答案 1 :(得分:0)
你在找implode()之类的东西吗?
$roles = array("role1","role2","role3");
$imploded = implode(",", $roles);
echo $imploded; //should return "role1,role2,role3"