0
$lang_result = array();

function f_language($lang)
{
    if (is_array($lang) === true)
    {
        foreach ($lang as $key => $value)
        {
            $temp[] = "'$value'";
        }
        $lang = implode(',',$temp);
    }    
    $qryLang = mssql_query ("
                SELECT LANG_CODE,LANG_TEXT
                FROM TLANGUAGE
                WHERE LANG_ID = 'EN' --coocie.lang_id
                AND LANG_CODE in ($lang) 
            ");

    global $lang_result;
    while ($row = mssql_fetch_array($qryLang))
    {
        array_push($lang_result,array("$row[LANG_CODE]" => "$row[LANG_TEXT]"));
    }
}
$lang_code = array();
array_push($lang_code,'ofc','sch');
#array_push($lang_code,'sch');
f_language($lang_code);
echo "<hr/>";
var_dump($lang_result);

输出:

array(2) { [0]=> array(1) { ["ofc"]=> string(6) "office" }
       [1]=> array(1) { ["sch"]=> string(6) "school" } 
     }

我试过了,(array_search('office',$lang_result));然后我没有得到索引值。有人请帮助我吗?

4

3 回答 3

1

这是因为$lang_result是一个具有数组元素的数组。我建议你做foreachon $lang_result(甚至更好for,所以你马上得到一个计数器),然后用它array_search来查找是否有匹配,然后使用计数器标记那个元素。

于 2013-05-23T12:43:30.103 回答
0

它不起作用,因为 $lang_result 是一个多维数组。您需要在每个子数组中进行搜索。试试这个功能:

<?php
$lang_result = array(
    array("ofc" => "office"),
    array("sch" => "school")
    );

function search_text(&$array, $text)
// {{{
{
    foreach($array as $key => $value)
    {
        $result = array_search($text, $value);
        if ($result != FALSE)
        {
            return $result;
        }
    }
    return FALSE;
}
// }}}

print search_text($lang_result, "office")."\n";
var_dump(search_text($lang_result, "crap"));
?>

此代码打印:

ofc 
bool(false)

我想,这就是你需要的。

于 2013-05-23T12:46:37.510 回答
0

或者更换

while ($row = mssql_fetch_array($qryLang))
{
  array_push($lang_result,array("$row[LANG_CODE]" => "$row[LANG_TEXT]"));
}

while ($row = mssql_fetch_array($qryLang))
{
  $lang_result[$row[LANG_CODE]] = $row[LANG_TEXT];
}

这将防止数组变得多维。

于 2013-05-23T12:57:29.447 回答