加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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"
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读