$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));
然后我没有得到索引值。
有人请帮帮我吗?
答案 0 :(得分:1)
这是因为$lang_result
是一个包含数组元素的数组。我建议你在foreach
上做$lang_result
(或者更好for
,所以你马上得到一个柜台)然后然后使用array_search
找到是否匹配,然后使用计数器标记该元素。
答案 1 :(得分: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)
我想,这就是你所需要的。
答案 2 :(得分: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];
}
这将防止阵列变得多维。