php数组:在表中搜索匹配的值并用数组键替换

时间:2011-08-16 15:36:19

标签: php arrays

我想循环遍历我的表并将值与php包含的文件中的数组进行比较。如果匹配,则返回匹配项的数组键,并将其替换为表的值。我需要帮助从include文件返回数组键并将其与表值进行比较。

    $myarray = array(
    "12aaa"=>"hammer",
    "22bbb"=>"pinchbar", 
    "33ccr"=>"wood" );

在我的循环中的单独文件

      include 'myarray.inc.php';
      while($row = $db->fetchAssoc()){
      foreach($row as $key => $val)
         if $val has a match in myarray.inc.php
          {
             $val = str_replace($val,my_array_key);
          }


   }

所以从本质上说,如果我的db表有锤子和木头,$ val将在循环中产生12aaa和3ccr。有帮助吗?非常感谢

4 个答案:

答案 0 :(得分:2)

您正在寻找array_search,它将返回与给定值相关联的密钥(如果存在)。

$result = array_search( $val, $myarray );
if ($result !== false) {
  $val = $result;
}

答案 1 :(得分:0)

你的数组看起来应该是

 $myarray = array(
    "hammer"=>"11aaa",
    "pinchbar"=>"22bbb", 
    "wood"=>"33ccr" );

和代码

if (isset($myarray[$key])){
    //do stuff
}

答案 2 :(得分:0)

我认为你需要函数in_array($ val,$ myarray);

答案 3 :(得分:0)

如果你不想或不能改变像@genesis提议的$myarray结构,你可以使用array_flip

include 'myarray.inc.php';
$myarray = array_flip($myarray);
while($row = $db->fetchAssoc()) {
    foreach($row as $key => $val) {
        if (isset($myarray[$val])) {
            // Maybe you should use other variable instead of $val to avoid confusion
            $val = $myarray[$val]; 

            // Rest of your code
        }
    }
}