Exakat\Analyzer\Arrays\AmbiguousKeys::analyze PHP Метод

analyze() публичный Метод

public analyze ( )
    public function analyze()
    {
        $this->atomFunctionIs('\\array')->raw('where(
    __.sideEffect{ counts = [:]; integers = [:]; strings = [:]; }
      .out("ARGUMENTS").out("ARGUMENT").hasLabel("Keyvalue").out("KEY")
      .hasLabel("String", "Integer").where(__.out("CONCAT").count().is(eq(0)))
      .sideEffect{ 
            if ("noDelimiter" in it.get().keys() ) { 
                k = it.get().value("noDelimiter"); 
                if (counts[k] == null) { counts[k] = ["string"]; } else { counts[k].add("string"); }
            } else { 
                k = it.get().value("code"); 
                if (counts[k] == null) { counts[k] = ["integer"]; } else { counts[k].add("integer"); }
            }
        }
        .map{ counts.findAll{a,b -> b.unique().size() > 1}; }.unfold().count().is(neq(0))
)');
        $this->prepareQuery();
        // $x = [1.0 => 2];
        $this->atomFunctionIs('\\array')->outIs('ARGUMENTS')->outIs('ARGUMENT')->atomIs('Keyvalue')->outIs('KEY')->atomIs(array('Real', 'Null', 'Boolean'))->back('first');
        $this->prepareQuery();
        // $x[1.0] = 2;
        $this->atomIs('Array')->outIs('INDEX')->atomIs(array('Real', 'Null', 'Boolean'))->back('first');
        $this->prepareQuery();
    }
AmbiguousKeys