将cake结果数组更改为cakephp中的所需格式

时间:2011-09-16 14:50:03

标签: php arrays cakephp

我正在获取一个用于执行sql查询的用户名数组。就像这样

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')

我该怎么做?

4 个答案:

答案 0 :(得分:2)

如果使用find('list')方法,则可以指定字段,结果将是一个简单的键/值数组。

另一种方法是使用Core实用程序库中的Set Object。请参阅extract()方法

希望这有帮助

答案 1 :(得分:2)

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

答案 2 :(得分:1)

Set::extract()似乎是array_combine()所需要的{{3}}。 这是一个例子:

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

答案 3 :(得分:1)

你真正要求的是Set::combine,它基本上是皮埃尔·马丁所暗示的组合。

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