2016-08-26 4 views
0

私はPHPを初めて使用しています。私はPHPで私のプロジェクトをやっているし、私は配列関数とそのすべてのものに新しいです。私は試してみましたが、成功していません。私のSQLクエリ配列を見せてください。 私は以下の通りです1つの私の配列を持っている:配列の操作または変更

Array 
(
    [0] => Array 
     (
      [pc_eventDate] => 2016-08-25 
      [ufname] => Rutul 
      [ulname] => Shah 
      [name] => Clinic 
     ) 

    [1] => Array 
     (
      [pc_eventDate] => 2016-08-26 
      [ufname] => Rutul 
      [ulname] => Shah 
      [name] => Clinic 
     ) 

    [2] => Array 
     (
      [pc_eventDate] => 2016-08-25 
      [ufname] => Administrator 
      [ulname] => Administrator 
      [name] => Clinic 
     ) 

    [3] => Array 
     (
      [pc_eventDate] => 2016-08-26 
      [ufname] => Administrator 
      [ulname] => Administrator 
      [name] => Clinic 
     ) 

    [4] => Array 
     (
      [pc_eventDate] => 2016-08-25 
      [ufname] => Administrator 
      [ulname] => Administrator 
      [name] => Clinic 
     ) 

    [5] => Array 
     (
      [pc_eventDate] => 2016-08-26 
      [ufname] => Amit 
      [ulname] => Mahida 
      [name] => Cancer Specialist 
     ) 

    [6] => Array 
     (
      [pc_eventDate] => 2016-08-26 
      [ufname] => Amit 
      [ulname] => Mahida 
      [name] => Breach Candy Hospital 
     ) 

) 

今、私は私の結果の配列をしたい以下のように:あなたは、予定配列をループしたいとその他を生成するために、その内容を使用し

Array 
(
    [2016-08-25] => Array 
     (
      [ Clinic] => Array 
       (
        [Rutul Shah] => Array 
         (
          [appointments] => 1 
         ) 

        [Administrator Administrator] => Array 
         (
          [appointments] => 2 
         ) 

       ) 

     ) 

    [2016-08-26] => Array 
     (
      [Clinic] => Array 
       (
        [Rutul Shah] => Array 
         (
          [appointments] => 1 
         ) 
        [Administrator Administrator] => Array 
         (
          [appointments] => 1 
         ) 

       ) 
       [Cancer Specialist] => Array 
        (
         [Amit Mahida] => Array 
          (
           [appointments] => 1 
          ) 
        ) 
       [Breach Candy Hospital] => Array 
        (
         [Amit Mahida] => Array 
          (
           [appointments] => 1 
          ) 
        ) 

     ) 

) 
+0

どのバージョンのPHPを実行していますか? – trincot

+0

私のPHPのバージョンは5.6.14 –

答えて

1

データ構造。さんがあなたの最初の配列$inputとあなたの二番目の配列$outputを呼び出してみましょう:

// initialize output array 
$output = []; 

// loop through each $appt in the $input array 
foreach($input as $appt) { 
    // get shorter var names for appt data 
    $date = $appt['pc_eventDate']; 
    $name = $appt['name']; 
    $uname = $appt['ufname'].' '.$appt['ulname']; 

    // initialize each level of the data structure if it doesn't already exist 
    if(!isset($output[$date])) $output[$date] = []; 
    if(!isset($output[$date][$name])) $output[$date][$name] = []; 
    if(!isset($output[$date][$name][$uname])) $output[$date][$name][$uname] = []; 
    // initialize the number of appts to 0 
    if(!isset($output[$date][$name][$uname]['appointments'])) $output[$date][$name][$uname]['appointments'] = 0; 

    // increment the number of appts 
    $output[$date][$name][$uname]['appointments']++; 
} 

重要なことは、古い構造のデータによると、新たな構造の各サブアレイの使う初期である - そこから私たちはただです新しいデータと一致する予定の数を数えます。

幸運!

+0

あなたの返信ありがとうございます。それは私をたくさん助けました。 –

0

は、配列が問題であると言う。これは、あなたが上記のような何かをするために必要なソリューション

foreach ($arr as $key => $value) { 
    if(!is_array($value['pc_eventDate])) 
      $value['pc_eventDate] = []; 
    if(!is_array($value['pc_eventDate]['name'])) 
      $value['pc_eventDate]['name'] = []; 
    if(!is_array($value['pc_eventDate']['name']['ufname'.' ulname'])){ 
      $value['pc_eventDate']['name']['ufname'.' ulname'] = []; 
      $value['pc_eventDate']['name']['ufname'.' ulname']['appointments'] = 1; 
    }else{ 
     $value['pc_eventDate']['name']['ufname'.' ulname']['appointments'] += 1; 
    } 
} 

として望んでいた方法で配列を手配します$arr

です。 上記のコードを実行してみると、いくつかのタイプミスがある可能性があります。その結果が得られない場合は、foreach本体のすべての行をコメントアウトし、配列構造の構築をテストするために各ステップvar_dump()を試してみてください。

ありがとうございました