1

いくつかのコーディングの後、私はこのような動的配列を取得します。データによると、値が増えると増加する可能性があります。しかし、これはサンプルです。

Array ( 
    [11-23-1] => 5 
    [17-29-2] => 5 
    [9-21-1] => 3 
    [10-52-2] => 5 
    [17-30-2] => 3
  )

この配列を取得した後、次の形式で配列を取得したいと思います。上記の配列の値をキーとして、キーを値として、一意のキーを使用します。お気に入り -

Array ( 
    5 => Array ( [0] => [11-23-1]
                 [1] => [17-29-2] 
                 [2] => [10-52-2] )

    3 => Array ( [0] =>[9-21-1] 
                 [1] => [17-30-2]) 
  )

どうすればいいですか?

4

3 に答える 3

1
<?php
$source = Array ( 
    '11-23-1' => 5,
    '17-29-2' => 5, 
    '9-21-1' => 3,
    '10-52-2' => 5, 
    '17-30-2' => 3
);


$result = array();
foreach($source as $k=>$v) {
    if ( !isset($result[$v]) ) {
        $result[$v] = array();
    }
    $result[$v][] = $k;
}
var_export($result);

プリント

array (
  5 => 
  array (
    0 => '11-23-1',
    1 => '17-29-2',
    2 => '10-52-2',
  ),
  3 => 
  array (
    0 => '9-21-1',
    1 => '17-30-2',
  ),
)
于 2012-08-31T09:52:05.620 に答える
0

逆行する

$array = array ('11-23-1' => '5',
                '17-29-2' => '5',
                '9-21-1' => '3',
                '10-52-2' => '5',
                '17-30-2' => '3');

$newArray = array();            
foreach($array as $num => $one){
    $newArray[$one][] = $num;
}

var_export($newArray);
于 2012-08-31T09:53:04.213 に答える
0

どうぞ、すべてパッケージ化されていて素敵です:)

<?
$arr = array (
    '[11-23-1]' => 5,
    '[17-29-2]' => 5,
    '[9-21-1]' => 3,
    '[10-52-2]' => 5,
    '[17-30-2]' => 3,
);

function rotateWithDuplicates($arr) {
    $result = array();

    foreach ($arr as $key => $value) {
        if (!array_key_exists($value, $result)) {
            $result[$value] = array();
        }
        $result[$value][] = $key;
    }

    return $result;
}

var_dump(rotateWithDuplicates($arr));
于 2012-08-31T09:54:51.233 に答える