PHP将数组合在相似的元素上
发布时间:2020-12-13 17:45:02 所属栏目:PHP教程 来源:网络整理
导读:我有这种格式的一些数据: even--heapedbr /even--treesbr /hardrocks-cockedbr /pebble-templebr /heaped-feastbr /trees-feastbr / 我希望最终得到一个输出,以便所有具有相同单词的行相互添加而不重复. even--heaped--trees--feastbr /hardrocks--cockedbr
我有这种格式的一些数据:
even--heaped<br /> even--trees<br /> hardrocks-cocked<br /> pebble-temple<br /> heaped-feast<br /> trees-feast<br /> 我希望最终得到一个输出,以便所有具有相同单词的行相互添加而不重复. even--heaped--trees--feast<br /> hardrocks--cocked<br /> pebbles-temple<br /> 我尝试了一个循环通过两个数组,但它不是我想要的确切结果.对于数组$thing: Array ( [0] => even--heaped [1] => even--trees [2] => hardrocks--cocked [3] => pebbles--temple [4] => heaped--feast [5] => trees--feast ) for ($i=0;$i<count($thing);$i++){ for ($j=$i+1;$j<count($thing);$j++){ $first = explode("--",$thing[$i]); $second = explode("--",$thing[$j]); $merge = array_merge($first,$second); $unique = array_unique($merge); if (count($unique)==3){ $fix = implode("--",$unique); $out[$i] = $thing[$i]."--".$thing[$j]; } } } print_r($out); 但结果是: Array ( [0] => even--heaped--heaped--feast [1] => even--trees--trees--feast [4] => heaped--feast--trees--feast ) 这不是我想要的.任何建议(抱歉可怕的变量名称). 解决方法
试试这段代码:
<?php $data = array ("1--2","3--1","4--5","2--6"); $n = count($data); $elements = array(); for ($i = 0; $i < $n; ++$i) { $split = explode("--",$data[$i]); $word_num = NULL; foreach($split as $word_key => $word) { foreach($elements as $key => $element) { if(isset($element[$word])) { $word_num = $key; unset($split[$word_key]); } } } if(is_null($word_num)) { $elements[] = array(); $word_num = count($elements) - 1; } foreach($split as $word_key => $word) { $elements[$word_num][$word] = 1; } } //combine $elements into words foreach($elements as $key => $value) { $words = array_keys($value); $elements[$key] = implode("--",$words); } var_dump($elements); 它使用$元素作为散列数组,将各个唯一单词存储为键.然后组合键以创建适当的单词. 打印这个: array(2) { [0]=> string(10) "1--2--3--6" [1]=> string(4) "4--5" } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |