recursive fonksiyon php

0 Cevap php

Şöyle bir dizi var

$dataArray = array (
  0 => 
  array (
    'UserId' => '804023',
    'ProjectCode' => 'RA1234',
    'Role' => 'PI',
  ),
  1 => 
  array (
    'UserId' => '804023',
    'ProjectCode' => 'RA1234',
    'Role' => 'PM',
  ),
  2 => 
  array (
    'UserId' => '804023',
    'ProjectCode' => 'A90123',
    'Role' => 'CI',
  ),
  3 => 
  array (
    'UserId' => '804023',
    'ProjectCode' => 'A20022',
    'Role' => 'PM',
  ),
)

Ben böyle bakmak gerekir

$expected = array (
  804023 => 
  array (
    'RA1234' => 
    array (
      0 => 'PI',
      1 => 'PM',
    ),
    'A90123' => 
    array (
      0 => 'PI',
    ),
    'A20022' => 
    array (
      0 => 'CI',
    ),
  ),
)

Bu birçok kez rastlamak olasıdır olduğum bir senaryo olduğu gibi bu özyineleme kullanarak jenerik elde edilebilir düşünüyorum

Ben çok iç içe dizi anahtarları yani formu tuşları bir dizi geçen bu var

$keys=array("UserId","projectCode","Role");

ama sadece burada nerede herhangi bir işaretçiler gitmek için göremiyorum?

public function structureData(array $data, array $keys)
 {
  //$structuredData = array();


  foreach ($data as $key => $value)
  {
   $keyForData = array_slice($keys,0,1);


   $remainingKeys = $keys;
   array_shift($remainingKeys);

   if (!array_key_exists($value[$keyForData[0]], $structuredData))
   {

    $count=count($remainingKeys);


    $structuredData[$value[$keyForData[0]]] =array();
    // this returns as expected array(804023 =>array ()); but subsequent recursive calls with the remaining data fail



   }

  }
  return $structuredData);
}

0 Cevap