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);