【发布时间】:2013-04-18 12:13:56
【问题描述】:
我有两个多维数组。第一个$properties 包含英文名称及其值。我的第二个数组包含翻译。一个例子
$properties[] = array(array("Floor"=>"5qm"));
$properties[] = array(array("Height"=>"10m"));
$translations[] = array(array("Floor"=>"Boden"));
$translations[] = array(array("Height"=>"Höhe"));
(它们是多维的,因为它们包含更多元素,但现在它们应该无关紧要)
现在我想翻译这个数组,所以我最后是这样的:
$properties[] = array(array("Boden"=>"5qm"));
$properties[] = array(array("Höhe"=>"10m"));
我已经设法构建了 foreach 结构来循环遍历这些数组,但最后它没有被翻译,问题是我如何告诉数组用值替换键。
我所做的是这样的:
//Translate Array
foreach ($properties as $PropertyArray) {
//need second foreach because multidimensional array
foreach ($PropertyArray as $P_KiviPropertyNameKey => $P_PropertyValue) {
foreach ($translations as $TranslationArray) {
//same as above
foreach ($TranslationArray as $T_KiviTranslationPropertyKey => $T_KiviTranslationValue) {
if ($P_KiviPropertyNameKey == $T_KiviTranslationPropertyKey) {
//Name found, save new array key
$P_KiviPropertyNameKey = $T_KiviTranslationValue;
}
}
}
}
}
问题在于保存新密钥的行:
$P_KiviPropertyNameKey = $T_KiviTranslationValue;
我知道这部分执行正确并包含正确的变量,但我认为这是分配新密钥的错误方式。
应该这样做:
$properties[$oldkey] = $translations[$newkey];
所以我尝试了这个:
$PropertyArray[$P_KiviPropertyNameKey] = $TranslationArray[$T_KiviTranslationPropertyKey];
据我了解,以上行应该将 PropertyArray 的 P_KiviPropertyNameKey 更改为 Translation Array 的值,但我没有收到任何错误,也没有翻译名称。这应该如何正确完成?
感谢您的帮助!
其他信息
这是一个属性数组的实例
Array
(
[0] => Array
(
[country_id] => 4402
)
[1] => Array
(
[iv_person_phone] => 03-11
)
[2] => Array
(
[companyperson_lastname] => Kallio
)
[3] => Array
(
[rc_lot_area_m2] => 2412.7
)
[56] => Array
(
[floors] => 3
)
[57] => Array
(
[total_area_m2] => 97.0
)
[58] => Array
(
[igglo_silentsale_realty_flag] => false
)
[59] => Array
(
[possession_partition_flag] => false
)
[60] => Array
(
[charges_parkingspace] => 10
)
[61] => Array
(
[0] => Array
(
[image_realtyimagetype_id] => yleiskuva
)
[1] => Array
(
[image_itemimagetype_name] => kivirealty-original
)
[2] => Array
(
[image_desc] => makuuhuone
)
)
)
这是翻译数组的一个活生生的例子
Array
(
[0] => Array
(
[addr_region_area_id] => Maakunta
[group] => Kohde
)
[1] => Array
(
[addr_town_area] => Kunta
[group] => Kohde
)
[2] => Array
(
[arable_no_flag] => Ei peltoa
[group] => Kohde
)
[3] => Array
(
[arableland] => Pellon kuvaus
[group] => Kohde
)
)
我可以用另一种方式构建翻译数组。我这样做是因为在第二步中我必须检查密钥属于哪个组...
【问题讨论】:
-
谢谢!我想用 $translations 的值替换 $properties 的键
-
数组总是只有一个子深度吗?
-
Noo 很遗憾没有...我想先翻译第一个孩子,然后再担心第二个 lvl...
-
@Kaktus,只是出于兴趣,您能否举例说明分配给
$properties[]的完整 数组的结构如何?因为array,array,array在我看来有点模棱两可。第二,$translations数组的结构怎么和$properties数组一样?有一个基于键的翻译数组不是更容易吗? -
我添加了一个实时示例...示例中的键名不匹配,因为我只取了一小部分,但它们在真实数组中匹配...你是什么意思 拥有一个基于密钥的翻译数组不是更容易吗?我很想听听任何能让这更容易的事情!
标签: php arrays multidimensional-array