我如何从下面的条件获得索引数组PHP

时间:2013-05-23 12:27:55

标签: php arrays

$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));然后我没有得到索引值。 有人请帮帮我吗?

3 个答案:

答案 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];
}

这将防止阵列变得多维。