2012-07-08 85 views
1

我写了下面的函数来按键搜索多维数组,但是如果我用键uri调用该函数,它会将具有键0的数组附加到找到的数组。怎么了?这个数组搜索功能有什么问题?

function search_arr($array, $key, &$found) { 
    foreach ($array as $k => $each) { 
     if ($k == $key) { 
      // output of "print $k = $key" is "0 = uri" 
      $found[] = $each; 
     } 
     if (is_array($each)) { 
      search_arr($each, $key, $found); 
     } 
    } 
} 

回答

1

使用===强制值类型匹配。你会得到零,因为比较0和“uri”是true-认为它们都评估为0.有关PHP如何处理这些“松散”比较的完整细节,请参见section of the manual

+0

为什么uri等于零?我认为0等于空字符串 – user16948 2012-07-08 20:11:05

+0

@Nima零等于'false'。 'null'等于'null'或空字符串。 – 2012-07-08 20:12:59

+0

好吧,但是为什么'uri'等于false? – user16948 2012-07-08 20:15:04