我正在努力从数组中提取一些值。这是阵列的精简版。
$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,但却没有设法找出如何定位键名而不是键值......
提前感谢您的帮助!
答案 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);
}
}
}