Php 阵列交点分组
我有很多需要翻译成不同语言的文本,Php 阵列交点分组,php,Php,我有很多需要翻译成不同语言的文本, e、 g.$text1需要翻译成法语和匈牙利语 $text1 = array ('fr', 'hr'); $text2 = array ('bg', 'el', 'hr'); $text3 = array ('bg', 'el', 'en', 'es'); $text4 = array ('bg', 'el', 'en', 'es'); $text5 = array ('bg', 'el', 'en', 'es', 'fr', 'hr'); 现在,我正在寻找
e、 g.$text1需要翻译成法语和匈牙利语
$text1 = array ('fr', 'hr');
$text2 = array ('bg', 'el', 'hr');
$text3 = array ('bg', 'el', 'en', 'es');
$text4 = array ('bg', 'el', 'en', 'es');
$text5 = array ('bg', 'el', 'en', 'es', 'fr', 'hr');
现在,我正在寻找一种将文本和语言相结合的方法,以获得最少的语言组合,从而获得如下结果:
$order1 = array('languages' => array('bg', 'el'), 'texts' => array ('text2', 'text3', 'text4', 'text5'));
$order2 = array('languages' => array('en', 'es'), 'texts' => array ('text3', 'text4', 'text5'));
$order3 = array('languages' => array('hr'), 'texts' => array ('text1', 'text2', 'text5'));
$order4 = array('languages' => array('fr'), 'texts' => array ('text1', 'text5'));
我完全不知道如何开始。谁能给我一个提示吗?
非常感谢。-->3v4l.org完整代码的链接这确实是一个相当棘手的问题 以下是我的解决方案:
//首先收集每种语言的所有文本
对于($i=1,$data=[];($key='text'.$i++)和&isset(${$key});){
$data=array_merge_recursive($data,array_fill_keys(${$key},$key));
}
//然后浏览它们,找到与相同文本匹配的其他语言
对于($i=1,$orders=[];计数($data)>0;$i++){
$text=重置($data);
$order=['语言=>[],'文本=>$texts];
while(false!==($lang=array\u search($text,$data,true))){
$order['语言][]=$lang;
未设置($data[$lang]);
}
$orders['order'.$i]=$order;
}
注释
$order1
,$order2
,等等),而不是订单数组,您可以执行提取($orders)
将它们提取到当前范围中,但我建议不要这样做,因为如果不小心,可能会意外覆盖预先存在的变量你问了一个很难回答的问题!尝试这样做…我们可以将var名称添加到每个数组的末尾以便于编码吗?例如:
$text1=array('fr','hr','text1')代码>是的,没问题。谢谢你的帮助!:-)我不确定这个问题是否很难回答,还是我遗漏了PHP中一些重要的简单注释!我会努力解决这个问题,哪怕是几天!但是如果有人来给你一个简短而好的回答,那就太棒了!有趣的答案!非常感谢你的帮助!非常感谢你的努力!
while($aux< count($order1)
in_array($order1[$aux], $text1)
$finalstr = $finalstr . $text1[$lastpos].' ';
$arrayfinal = explode(" ", $finalstr);