0

必要以上の結果を返す機能を持つ既存のプログラム内で作業しています。関数を再構築しないようにしています。配列を使用可能なサイズに削減する必要があります。配列は次のようになります。

array (size=2)
0 => 
array (size=24)
  'event' => '2013-07-22' 
  'endDate' => '0000-00-00' 
  'startTime' => '09:00:00' 
  'endTime' => '09:20:00' 
  'duration' => '1200'
  'recurrtype' => '0' 
  'recurrspec' => 
  'recurrfreq' => '0' 
  'catid' => '9' 
  'eid' => '13714'
  'title' => 'Physical' 
  'hometext' => 'CALLING PT # NOT IN SERV.' 
  'fname' => 'John' 
  'mname' => '' 
  'lname' => 'Bass Jr' 
  'id' => '993' 
  'pubpid' => '993' 
  'phone_home' => '555-111-2222'
  'phone_cell' => ''
  'ufname' => 'Dr' 
  'umname' => 'B'
  'ulname' => 'No'
  'uprovider_id' => '2' 
  'catname' => 'Physical'
1 => 
array (size=24)
  'event' => '2013-07-22' 
  'endDate' => '0000-00-00' 
  'startTime' => '09:00:00' 
  'endTime' => '09:20:00' 
  'duration' => '1200'
  'recurrtype' => '0' 
  'recurrspec' => 
  'recurrfreq' => '0' 
  'catid' => '9' 
  'eid' => '13717'
  'title' => 'Physical' 
  'hometext' => '' 
  'fname' => 'James' 
  'mname' => '' 
  'lname' => 'Lenny Jr' 
  'id' => '993' 
  'pubpid' => '993' 
  'phone_home' => '555-111-2222'
  'phone_cell' => ''
  'ufname' => 'Dr' 
  'umname' => 'B'
  'ulname' => 'No'
  'uprovider_id' => '2' 
  'catname' => 'Physical'

必要な配列は次のとおりです。

 array (size=2)
 0 =>
  'event' => '2013-07-22' 
  'startTime' => '09:00:00' 
  'fname' => 'John' 
  'lname' => 'Bass Jr' 
  'phone_home' => '555-111-2222'
 1 =>
  'event' => '2013-07-22' 
  'startTime' => '09:00:00' 
  'fname' => 'James' 
  'lname' => 'Lenny Jr' 
  'phone_home' => '555-111-2222'

この配列を返す関数を PHP のマニュアルで検索しましたが、必要のないキーを除外する方法がわかりませんでした。前もって感謝します。

4

4 に答える 4

0

次のような独自の関数を作成します。

function get_desired_array($theArray)
{
   $desired_keys = array( 'event','startTime', 'fname', 'lname','phone_home');
   $desired_array = array();

   foreach ($theArray as $childArray)
   {
      foreach ($childArray as $k => $v)
      {
          if(in_array($k, $desired_keys))
          {
             $desired_array[$k] = $v;
          }
      }
   }

   return $desired_array;
 }

関数を実行します。

$desired_array = get_desired_array($theArray);

//you can now:
var_dump($desired_array);
于 2013-07-30T00:55:38.540 に答える
0

PHP にはそのための特別な関数があります: array_intersect_key

これはコードです:

$originArray = array(
  // your original array here
  // 0 => array(...)
  // 1 => array(...)
  // ...
  // n => array(...)
);
$desiredKeys = array_flip(array('event', 'startTime', 'fname', 'lname', 'phone_home'));
foreach ($originArray as $index => $subArray)
{
    $originArray[$index] = array_intersect_key($subArray, $desiredKeys);
}

PS。array_intersect_key がキーによる比較を行うように、array_flip を使用して値をキーに変換しました。$desiredKeys を定義する別の方法:

$desiredKeys = array('event'=>1, 'startTime'=>1, 'fname'=>1, 'lname'=>1, 'phone_home'=>1);
于 2014-03-27T01:10:39.003 に答える
0

function : array_column を使用できます。ただし、php >= 5.5.0 が必要です

于 2014-03-27T00:44:03.940 に答える