-1

重複が削除され、一意の値が保持されるように、配列をフラット化しようとしています。例えば:

$places = array( 
   array("United Kingdom","London","Camden","1"), 
   array("United Kingdom","London","Camden","5"),
   array("United Kingdom","London","Camden","23"),
   array("United Kingdom","London","Camden","71") 
);

次のようになります。

$places = array("United Kingdom","London","Camden","1,5,23,71");

また

$places = array('Country' => 'United Kingdom',
                'County' => 'London',
                'City' => 'Camden',
                'Codes' => array(1,5,23,71)
          );
4

4 に答える 4

2

配列項目のすべての値は文字列であるため、利便性のためにそれらを配列キーの一部として使用できます。したがって、これは可能な解決策です:

$temp = array();
foreach($places as $items) {
    $id = array_pop($items);
    $key = serialize($items);
    $temp[$key][] = $id;
}

$result = array();
foreach($temp as $k => $ids) {
    $result[] = array_merge(unserialize($k), array($ids));
}

効率よりも利便性を優先しますが、かなり短いです。

実際に見てください

于 2013-02-15T09:45:10.770 に答える
1

3つのステップで:

  • まず、インデックスで情報を収集します

  • 次にarray_unique、一意の値に使用します

  • 最後に、3つのアレイを大きなものに結合します。

コード

$places = array( 
   array("United Kingdom","London","Camden","1"), 
   array("United Kingdom","London","Camden","5"),
   array("United Kingdom","London","Camden","23"),
   array("United Kingdom","London","Camden","71") 
);

foreach ($places as $p) {
   for ($i=0; $i<count($p); $i++) {
        $t[$i][]=$p[$i];  
    }
}

for ($i=0; $i<count($t); $i++) {
    $new[$i]= implode(",", array_unique($t[$i]));
}

$result=array_merge($new);

print_r($result);

Array ( [0] => United Kingdom [1] => London [2] => Camden [3] => 1,5,23,71 )
于 2013-02-15T09:42:13.807 に答える
0

たとえば、次のようにarray_unique()を使用します。

 $places = array( 
 array("United Kingdom","London","Camden","1"), 
 array("United Kingdom","London","Camden","5"),
 array("United Kingdom","London","Camden","23"),
 array("United Kingdom","London","Camden","71") 
 );

echo "<pre>";
print_r(array_unique($places));

o/p


Array
(
   [0] => Array
    (
        [0] => United Kingdom
        [1] => London
        [2] => Camden
        [3] => 1
    )
) 

希望はそれを助けるでしょう!

于 2013-02-15T09:43:27.620 に答える
0
$places = array( 
   array("United Kingdom","London","Camden","1"), 
   array("United Kingdom","London","Camden","5"),
   array("United Kingdom","London","Camden","23"),
   array("United Kingdom","London","Camden","71") 
);

$result = array();
foreach($places as $val){
   $result['Country'][$val[0]]  = $val[0];
   $result['County'][$val[1]]  = $val[1];
   $result['City'][$val[2]]  = $val[2];
   $result['Codes'][$val[3]]  = $val[3];
}
$final   = array();
foreach($result as $key=>$value){
    $final[$key]  = implode(",",$value);
}

echo "<pre>";
print_r($final);

出力:

Array
(
    [Country] => United Kingdom
    [County] => London
    [City] => Camden
    [Codes] => 1,5,23,71
)
于 2013-02-15T09:56:34.853 に答える