这个php for循环正确吗


is this php for loop correct?

我正在尝试运行在上找到的pagerank脚本http://www.getrank.org/pagerank-script/.但我在尝试时收到一条错误消息。下面是错误消息。

这是合法的php代码吗?

...
function _strord($string){
for($i=0;$i $result[$i] = ord($string{$i});
return $result;
}
...

我在for语句开始的那一行得到了这个错误。

Parse error: syntax error, unexpected T_VARIABLE, expecting ';' in /home/Desktop/test/pagerank-checker.php on line 73

谢谢。

您需要一个比较和增量:

function _strord( $string) {
    $result = array();
    for( $i = 0, $len = strlen( $string); $i < $len; $result[$i] = ord($string[$i]), $i++);
    return $result;
}

我还对它进行了优化,以便在循环中重复省略对strlen()的调用。

如果您查看该页面上所写内容的源代码,您将看到:

function _strord($string){<br>
   for($i=0;$i<strlen($string);$i++)<br>
       $result[$i] = ord($string{$i});<br>
   return $result;<br>
}<br>

代码未正确转义,因此浏览器将以<strlen开头的文本视为HTML标记的开头,并遗漏了一些重要的代码。。。

如果没有标记,它会显示:

function _strord($string){
   for($i=0;$i<strlen($string);$i++)
       $result[$i] = ord($string{$i});
   return $result;
}

EDIT一个更干净的实现是:

function _strord($string) {
    return array_map('ord', str_split($string, 1));
}

不知道你想做什么,但函数应该是这样的:

function _strord ($string ) {
  for( $i=0; $i<strlen( $string ); $i++ ) {
    $result[$i] = ord( $string[$i] );
  }
  return $result;
}
function _strord($string){
    $result = "";
    for($i=0;$i < strlen($string), $i++)
        $result[$i] = ord($string[$i]);
    return $result;
}