2

配列からいくつかの値を取り出そうとして、ひどい時間を過ごしています。これは、配列のスリム化されたバージョンです。

$properties = array( array( PropertyID => 2845, 
                  Address_1 => "1234 Any street",
                  MEDIA_IMAGE_00 => "23428.jpg",
                  MEDIA_IMAGE_TEXT_00 => "Front of House",
                  MEDIA_IMAGE_01 => "29872.jpg",
                  MEDIA_IMAGE_TEXT_01 => "Master Bedroom",
                  MEDIA_IMAGE_02 => "29834.jpg"
                ),
              array( PropertyID => 2845, 
                  Address_1 => "555 This street",
                  MEDIA_IMAGE_00 => "234234.jpg",
                  MEDIA_IMAGE_TEXT_00 => "Front of House",
                  MEDIA_IMAGE_01 => "298724.jpg",
                  MEDIA_IMAGE_TEXT_01 => "Second Bedroom",
                  MEDIA_IMAGE_02 => "298346.jpg"
                ),
              array( PropertyID => 2845, 
                  Address_1 => "333 Main street",
                  MEDIA_IMAGE_00 => "2342845.jpg",
                  MEDIA_IMAGE_TEXT_00 => "Lounge",
                  MEDIA_IMAGE_01 => "2987246.jpg",
                  MEDIA_IMAGE_TEXT_01 => "Front of House",
                  MEDIA_IMAGE_02 => "2983434.jpg"
                ),
         );

各サブ配列には大量のデータがあり、長さを切り詰めました...

このデータを MySQL データベースに挿入していますが、画像を別のテーブル [PropertyID, Image, ImageText] に挿入しています。

これで、背景が邪魔になりません。

一致する配列のキーとそこにある情報だけを別の配列にプルするにはどうすればよいですか? そのため、上記の配列は次のようなものになります。

$property_images = array( array( PropertyID => 2845, 
                         IMAGE => "23428.jpg",
                         IMAGE_TEXT => "Front of House"),
                  array( PropertyID => 2845,
                         IMAGE => "29872.jpg",
                         IMAGE_TEXT => "Master Bedroom",
                  array( PropertyID => 2845,
                         MEDIA_IMAGE_02 => "29834.jpg"
                         IMAGE_TEXT => "Living Room"

私は無駄にsscanfを試してみましたが、array_keysをいじりましたが、キー値ではなくキー名をターゲットにする方法を理解できませんでした...

事前にご協力いただきありがとうございます。

4

1 に答える 1

2

編集:

foreach( $properties as $v ) {
 foreach( $v as $k => $m ) {     

  if( strpos($k, 'MEDIA_IMAGE_TEXT_') !== FALSE  ) {        
    $new_array[] = array('PropertyID' => $v['PropertyID'], 'IMAGE'=>$prev, 'IMAGE_TEXT'=>$m );
  } 

  if( strpos($k, 'MEDIA_IMAGE_') !== FALSE ) {
    $prev = $m;  //var_dump($prev);
  }

 }
}
于 2012-10-23T13:20:48.607 に答える