запросить массив в многомерный массив - PullRequest
0 голосов
/ 22 мая 2018

Итак, я пытаюсь выполнить запрос, и когда я получаю массив, я хочу реорганизовать его.Или я могу выполнить запрос, чтобы получить желаемый результат?Как мне получить этот массив:

array() {
 [0] => array() {
  UID    => 1,
  gameid => 334613
 },
 [1] => array() {
  UID    => 2,
  gameid => 704234
 },
 [2] => array() {
  UID => 3,
  gameid => 704234
 }
}

, чтобы он стал таким:

$array = array (
    (334613) => array (
        [0] => 1
    ),
    (704234) => array (
        [0] => 2,
        [1] => 3
    )
);

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Простой цикл foreach сделает

$array = [ ... ]; // your array
$result = [];
foreach ($array as $game) {
    $result[ $game['gameid'] ][] = $game['UID'];
}

var_dump($result);
0 голосов
/ 22 мая 2018

Вы можете использовать array_reduce

$arr = array(
    array(
      "UID"    => 1,
      "gameid" => 334613
    ),
    array(
      "UID"    => 2,
      "gameid" => 704234
    ),
    array(
      "UID" => 3,
      "gameid" => 704234
    )
);


$result = array_reduce($arr, function($c, $v){
    if( !isset( $c[ $v["gameid"] ] ) ) $c[ $v["gameid"] ] = array(); //Will also work without this line. 
    $c[ $v["gameid"] ][] = $v["UID"];       
    return $c;
}, array());

print_r( $result );

Это приведет к:

Array
(
    [334613] => Array
        (
            [0] => 1
        )

    [704234] => Array
        (
            [0] => 2
            [1] => 3
        )

)

Документ: array_reduce ()

Youтакже можно использовать классический foreach

$result = array();
foreach( $arr as $key => $val ) {
    $result[ $val["gameid"] ][] = $val["UID"];  
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...