Php String联合和交集

时间:2014-03-29 10:54:20

标签: php string

我遇到了这个问题。 我有一个像:

这样的数组

数组([0] => usb [1] => usb pc [2] => pc [3] =>相机[4] =>相机168 [5] => 168)

我想输出上面数组中只包含[usb pc]和[camera 168]的两个条目 因为他们的解体已经有其他因素,所以不需要这些因素。

另一个例子

[考希克]
[kaushik是]
[kaushik很棒]
[是]
[很棒]
[大]

这应该只放[kaushik很棒]元素。

另一个例子:

[USB]
[PC]
[cam 168]
[凸轮]
[168]

这应该放[usb] [pc]和[cam 168]元素。

上述问题是一个问题的一部分,我想找出字符串中的分裂点数。

例如字符串是:USB PC CAMERA DOWNLOAD 168

关键字:USB PC CAMERA 168

在字符串中,如果可以猜测,关键字将被单词DOWNLOAD拆分。

所以分裂数= 1

如果我们采用字符串:我们的PC的USB CAMERA DOWNLOAD 168

此处关键字由我们的""拆分。 "所述"和"下载"

因此,分裂数= 3

2 个答案:

答案 0 :(得分:1)

测试了它,它似乎工作正常。 (修正了欺骗的错误

    <?php
// $a = array( 'kaushik', 'kaushik is', 'kaushik is great', 'is', 'is great', 'great' );
$a = array('usb', 'pc', 'cam 168', 'cam', '168', 'cam 168');

$a = array_unique($a);
$s = count($a);
$p = array();

foreach ($a as $key => $b)
{
    $x = 0;
    for ($i = 0; $i < $s; $i++)
    {
        if ($key == $i) continue;

        $c = $a; unset($c[$key]);
        if (strpos($c[$i], $b) === false) $x++;

        if ($x == $s - 1) array_push($p, $key);
    }
}

foreach ($p as $o => $value) {
    echo $a[$value]. ' ';
}
?>

行动here

答案 1 :(得分:0)

Haven没有对此进行彻底测试,但我认为它运作正常。

<?php

    // just comment/uncomment to choose which $data you want to see in action

   //$data = array("kaushik","kaushik is","kaushik is great","is","is great","great");
   $data = array("usb","pc","cam 168","cam","168");

    $current = "";

    for($i=0;$i<count($data);$i++)
    {
        $current=$data[$i];

        for($j=0;$j<count($data);$j++)
        {
            if($i<>$j)
            {
                if((str_replace($data[$j],"",$current))!=$current)
                {
                    $data[$j]="";
                };
            }
        }
    }

    for($i=0;$i<count($data);$i++)
    {
        if($data[$i]!="")
        {
            echo $data[$i]."\n";
        }
    }
?>

结果

kaushik is great

和其他数据集:

usb 
pc
cam 168

在这里采取行动:http://3v4l.org/9XUPJ