2014-02-18 54 views
0

我從php的查詢結果拉。結果數組中的其中一項是包含3組信息的數組。我如何讓它顯示所有三組而不僅僅是第一組?看到我的代碼如下:我有一個包含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

如果您不需要對該子數組中的各個角色執行任何操作,例如只顯示它,然後只需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; 
} 
0

你在尋找類似implode()

$roles = array("role1","role2","role3"); 
$imploded = implode(",", $roles); 
echo $imploded; //should return "role1,role2,role3" 
相關問題