我想翻译数组中的每个单词:
$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));
但是它没有返回数组,它只是将第一个键显示为字符串。
如何在函数中返回数组?
答案 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;
}