循环内的return仅返回一个值

问题描述 投票:0回答:2

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

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

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

如何在函数中返回数组?

php arrays
2个回答
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


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;
}
© www.soinside.com 2019 - 2024. All rights reserved.