2011-09-16 55 views
1

我得到的用戶名的陣列做一個SQL query.it的這樣改變SQL結果陣列所需的格式在CakePHP中

Array ( 
    [0] => Array (
     [users] => Array (
      [displayname] => Mark 
     ) 
    ) 
    [1] => Array ( 
     [users] => Array ( 
      [displayname] => Helan 
     ) 
    ) 
    [2] => Array ( 
     [users] => Array ( 
      [displayname] => Shaun 
     ) 
    ) 
    [3] => Array ( 
     [users] => Array ( 
      [displayname] => Basu 
     ) 
    ) 
    [4] => Array ( 
     [users] => Array ( 
      [displayname] => Charit 
     ) 
    ) 
    [5] => Array ( 
     [users] => Array ( 
      [displayname] => Chris 
     ) 
    ) 
    [6] => Array ( 
     [users] => Array ( 
      [displayname] => Tony 
     ) 
    ) 
    [7] => Array ( 
     [users] => Array ( 
      [displayname] => Sam 
     ) 
    ) 
    [8] => Array ( 
     [users] => Array ( 
      [displayname] => Duck 
     ) 
    ) 
    [9] => Array ( 
     [users] => Array ( 
      [displayname] => Frank 
     ) 
    ) 
) 

我想在陣列重建,以這種格式

Array ('Mark' => 'Mark','Helan' => 'Helan' , ..........,'Frank'=>'Frank')

我該怎麼做?

回答

2
$users = $this->User->find('list',array('fields'=>array('displayname','displayname'))); 
+0

我認爲那不會給你顯示名作爲鍵 – icc97

2

如果您使用find('list')方法,您可以指定字段,結果將是一個簡單的鍵/值數組。

另一種方法是使用Core實用程序庫中的Set Object。見提取物()方法

希望這有助於

1

看來Set::extract()是你所需要的這裏,與array_combine()。 下面是一個例子:

// $data contains your find result 
$names = Set::extract('/users/displayname', $data); 
$formattedData = array_combine($names, $names) 
1

你實際上是問什麼是Set::combine這基本上是什麼皮埃爾·馬丁提出了一種結合。

$names = Set::combine($data, '{n}.users.displayname', '{n}.users.displayname');