我有一个包含3个项目的数组中的数组,如何让它遍历两个数组中的每个项目?

时间:2014-02-18 21:20:41

标签: php ldap

我使用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扔到数组的中间。

我需要显示所有这些。

2 个答案:

答案 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"