在函数中返回数组

时间:2014-05-29 08:06:11

标签: php arrays

我想翻译数组中的每个单词:

$myarray = array("hi","bro");

所以我写了一个这样的翻译函数:

function translate($word) {    

    foreach ( $word as $key_translate ) {
        $array = array();

        $sql = mysql_query("SELECT * FROM `translate` WHERE name = '".$key_translate."'  ");
        if ( mysql_num_rows($sql) == 1 ) {
          $row = mysql_fetch_array($sql);
          $name = $row['fa_name'];
          return $name;
        //retuen array($name);
        }
        else {
          return $key_translate;
        //return array($key_translate);
        }
    }       
}

使用它来显示已翻译的数组:

print_r (translate($myarray));

但是它没有返回数组,它只是将第一个键显示为字符串。

如何在函数中返回数组?

2 个答案:

答案 0 :(得分:2)

不要在循环内部返回,它会立即退出整个函数,只返回一个元素。在数组中累积结果,然后返回。

function translate($word) {

    $result = array();
    foreach ( $word as $key_translate ) {

        $sql = mysql_query("SELECT fa_name FROM `translate` WHERE name = '".$key_translate."'  ");
        if ( mysql_num_rows($sql) == 1 ) {
            $row = mysql_fetch_array($sql);
            $result[] = $row['fa_name'];
        }
        else {
            $result[] = $key_translate;

        }
    }
    return $result;

}

此外,如果您只对SELECT *感兴趣,则没有理由使用fa_name

答案 1 :(得分:0)

试试这个:

function translate($word) {
    foreach ($word as $key => $translate) {
        $sql = mysql_query("SELECT * FROM `translate` WHERE name = '" . $translate . "'  ");
        if (mysql_num_rows($sql) == 1) {
            $row = mysql_fetch_array($sql);
            $word[$key] = $row['fa_name'];
        }
    }
    return $word;
}