PHP返回匹配KEY NAMES的数组并且有值

时间:2012-10-23 13:10:02

标签: php arrays multidimensional-array

我正在努力从数组中提取一些值。这是阵列的精简版。

$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,但却没有设法找出如何定位键名而不是键值......

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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);
  }

 }
}