我要翻译数组中的每个单词:
$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;
}