Bonjour,

J'ai une liste de groupe de mots et j'essaye de les regrouper en fonction des mots en commun

Voici mon code

    $array_title = array("fey palin" => 3 , "big theory" => 3 , "nyc through" => 3 , 
                            "jonas storm" => 3 , "bang theory" => 3  , 
                            "storm test" => 3 , "plain sahra" => 3 ,"mind woolf"  => 3, "mind virginia" => 3);

    $new_array = array();

    $i = 0;

    foreach($array_title as $title => $value){

        $words = explode(' ',$title);
        if(count($new_array)  > 0){
            foreach($new_array as $key => $value){
                if(preg_match('/\b('.$words[0].'|'.$words[1].')\b/', $key)){
                    $new_array[$key][$title] = $title;

                }else{

                    if(count($value) > 0){ 
                        foreach($value as $val){
                            if(preg_match('/\b('.$words[0].'|'.$words[1].')\b/', $val)){
                                $new_array[$key][$title] = $title;
                            }
                        }
                    }else{

                        $new_array[$title] = array();
                    }

                }
            }
        }else{
            $new_array[$title] = array();
        }
    }

Ce que je veux

Array
(
    [fey palin] => Array
        (
        )

    [big theory] => Array
        (
            [bang theory] => bang theory
        )

    [nyc through] => Array
        (
        )

    [jonas storm] => Array
        (
            [storm test] => storm test
        )

    [plain sahra] => Array
        (
        )

    [mind woolf] => Array
        (
            [mind virginia] => mind virginia
        )

)

Ce que j'obtiens

Array
(
    [fey palin] => Array
        (
        )

    [big theory] => Array
        (
            [bang theory] => bang theory
        )

    [nyc through] => Array
        (
        )

    [jonas storm] => Array
        (
            [storm test] => storm test
        )

    [bang theory] => Array
        (
        )

    [storm test] => Array
        (
        )

    [plain sahra] => Array
        (
        )

    [mind woolf] => Array
        (
            [mind virginia] => mind virginia
        )

    [mind virginia] => Array
        (
        )

)

Je me retrouve avec clés que je ne devrais pas avoir "mind virginia" , "storm test" , "bang theory" je pense que c'est dans mon avant dernier else ou çà va pas mais je vois pas comment je peux faire

2 réponses


Je ne vois pas la différence entre ce que tu veux / ce que tu as :)

C'est au niveau des clés de mon tableau que ça ne va pas.Je prends l'exemple de "jonas storm" et "storm test" qui sont lié par le mot "storm" dans mon tableau j'ai bien

    [jonas storm] => Array
        (
            [storm test] => storm test
        )

mais aussi

    [storm test] => Array                      <<< Je ne veux pas cette clé
        (
        )

Vu que storm test "appartient" deja a Jonas storm je ne veux pas qui réapparaisse