返回函数中的数组


return array in function

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

$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));

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

如何在函数中返回数组?

不要在循环内返回,这会立即退出整个函数,只返回一个元素。将结果累加到一个数组中,并返回该数组。

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;
}

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

试试这个:

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;
}