首页 > 解决方案 > PHP中的字符串数组(检查2个或更多字符串是否具有相同的开头)

问题描述

我的问题似乎有点傻,但我不知道为什么我似乎无法使代码工作。

我有一个字符串数组,想要执行以下操作:

当我找到2,3n以相同 3 个字母开头的元素时,exp 09_我想让它成为一个元素,以 . 分隔***。我试着这样做

for ($j=0;$j<count($list1)-1;$j++)
    { 
        $begin= substr($list1[$j], 0, 3).'<br>';
        //echo $list1[$j].'<br>';


        if( strpos( $list1[$j], $begin ) !== false) 
        {
            $list1[$j]=$list1[$j].'***'.$list1[$j+1];
          unset($list1[$j+1]);
          $list1 = array_values($list1);
        }

        echo $list1[$j].'<br>';
    }

我有这个数组:

('01_order','09_customer bla bla bla ','09_customer bla1 bla1 bla1','09_customer bla2 bla2 bla2')

我想让它看起来像这个数组

('01-order','09_customer bla bla bla * 09_customer bla1 bla1 bla1* 09_customer bla2 bla2 bla2')

请给我一些想法

谢谢

标签: php

解决方案


创建一个由子字符串索引的临时数组并内爆新数组的项目

$res = [];

foreach($list1 as $x) { 
   $res[substr($x, 0, 3)][] = $x;
}


foreach($res as &$x) {
   $x = implode('***', (array) $x);
}

print_r($res);

评估演示


推荐阅读