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 回答