# strcmp equivelant for integers (intcmp)

So we got this function in PHP

``````strcmp(string \$1,string \$2) // returns -1,0, or 1;
``````

We Do not however, have an intcmp(); So i created one:

``````function intcmp(\$a,\$b) {
if((int)\$a == (int)\$b)return 0;
if((int)\$a  > (int)\$b)return 1;
if((int)\$a  < (int)\$b)return -1;
}
``````

This just feels dirty. What do you all think?

this is part of a class to sort Javascripts by an ordering value passed in.

``````class JS
{
// array('order'=>0,'path'=>'/js/somefile.js','attr'=>array());
public \$javascripts = array();
...
public function __toString()
{
uasort(\$this->javascripts,array(\$this,'sortScripts'));
return \$this->render();
}
private function sortScripts(\$a,\$b)
{
if((int)\$a['order'] == (int)\$b['order']) return 0;
if((int)\$a['order'] > (int)\$b['order']) return 1;
if((int)\$a['order'] < (int)\$b['order']) return -1;
}
....
}
``````

``````function sortScripts(\$a, \$b)
{
return \$a['order'] - \$b['order'];
}
``````

Use \$b-\$a if you want the reversed order.

If the numbers in question exceed PHP's integer range, `return (\$a < \$b) ? -1 : ((\$a > \$b) ? 1 : 0)` is more robust.

You could use

``````function intcmp(\$a,\$b)
{
return (\$a-\$b) ? (\$a-\$b)/abs(\$a-\$b) : 0;
}
``````

Although I don't see the point in using this function at all

``````echo strnatcmp(1, 2) . PHP_EOL; // -1