-1

次の配列があります。

Array
(
[0] => Array
    (
        [User] => Array
            (
                [firstname] => Chris
                [lastname] => Willis
            )

    )

[1] => Array
    (
        [User] => Array
            (
                [firstname] => Test
                [lastname] => Willis
            )

    )
   ...

これを次のような構造に変換する必要があります。

Array
{
   'Chris-Willis' => 0
   'Test-Willis' => 1
   ....

これを行うのに役立つ配列関数は何ですか?

したがって、次のようにする必要があります。

  firstname-lastname => id
4

4 に答える 4

2
$grouped = array();
foreach ($users as $i => $user) {
    $grouped["{$user['User']['firstname']}-{$user['User']['lastname']}"] = $i;
}

配列が上記のとおりである場合、これも実行する必要があります。

$grouped = array_combine(array_map(function ($u) { return join('-', current($u)); }, $users), array_keys($users));
于 2012-10-30T07:14:16.230 に答える
1
foreach $original_array as $key=>$temp
{

    $some_other_array[$temp['USER']['firstname']."-".$temp['USER']['lastname']] = $key;
}
于 2012-10-30T07:15:40.713 に答える
1

CakePHP には、このような状況に役立つSet::combine()メソッドがあります。

配列のインデックスではなく、配列の値をユーザーのデータベース ID にしたいと考えています。

$users = $this->User->find('all', array(
  'fields' => array('id', 'firstname', 'lastname'),
));
$usersMap = Set::combine(
  $users,
  array('%1$s-%2$s', '{n}.User.firstname', '{n}.User.lastname') // sprintf() formatting
  '{n}.User.id',
);
于 2012-10-30T21:15:57.183 に答える
0

次のコードでうまくいくはずです

//$names は配列の名前です

$namesId = array();

foreach ($names as $k=>$v) {

$temp = $v["User"]["firstname"] . "-" . $v["User"]["lastname"];
$namesId[$temp] = $k;

}

于 2012-10-30T07:45:02.127 に答える