2016-03-19 10 views
0

PHP'de iki boyutlu bir dizilim var, ilk dizin, dizindeki öğenin adıdır ve Diğer endeksler, öğenin diğer bilgileridir. İlk dizinde yinelenen adlar var, ancak ikinci sırada değil.Bir 2B dizisinden veri alıp, ilk dizindeki yinelenen öğeleri nasıl bulabilirim ve PHP'deki başka bir dizinden öğelerle ilgili grupları gruplandır

Yapmak istediğim, diziyi bir tabloya eklemek, ancak yalnızca her adın bir kez görünmesi ve ikinci dizinden tüm benzersiz verilerin bir açılır listede (select etiketi) gösterilmesidir.

Yani var:

$array[0][0] = foo 
$array[0][1] = foo 
$array[0][2] = foo 

$array[0][3] = bar 
$array[0][4] = bar 

ve

$array[1][0] = 1 
$array[1][1] = 2 
$array[1][2] = 3 

$array[1][3] = 4 
$array[1][4] = 5 

İstediğim

foo | (select from 1-3) 
bar | (select from 4-5) 

cevap

0
<?php error_reporting(E_ALL); 

$array[0][0] = 'foo'; 
$array[0][1] = 'foo'; 
$array[0][2] = 'foo'; 

$array[0][3] = 'bar'; 
$array[0][4] = 'bar'; 

$array[1][0] = 1; 
$array[1][1] = 2; 
$array[1][2] = 3; 

$array[1][3] = 4; 
$array[1][4] = 5; 

// get new array without duplicate values 
$uniqueValueArray = array_unique($array[0]); 

$result = []; 

foreach ($uniqueValueArray as $value) 
{ 
    $row = ['value' => $value, 'ids' => []]; 

    // get keys form value array for given value 
    $valueKeys = array_keys($array[0], $value); 

    // find id form ids array for this value 
    foreach ($valueKeys as $key) 
    { 
     $row['ids'][] = $array[1][$key]; 
    } 

    $result[] = $row; 
} 

var_dump($result); 
ile bir tablodur
İlgili konular