2014-09-30 36 views
0

我有一个数组看起来像这样获得来自阵列的价值和检查值存在与否

$langs = Array 
(
    [source] => Array 
     (
      [0] => Array 
       (
        [0] => Arabic 
       ) 

      [1] => Array 
       (
        [0] => Azerbaijani 
       ) 

     ) 

    [target] => Array 
     (
      [0] => Azerbaijani 
      [1] => Array 
       (
        [0] => Amharic 
        [1] => Burmese 
       ) 
      [2] => Array 
       (
        [0] => English 
        [1] => German 
       ) 

     ) 

) 

现在我想从搜索目标键的值。所以我有我的代码看起来像这样

$target = array(); 
array_push($target, 'English'); // want to search from the above array so I made it push to array 
foreach($langs['target'] as $langs) { 
    if(in_array($target, $langs)) { 
     echo 'Got the value'; 
    } 
    else { 
     echo 'not got values'; 
    } 
} 

但它不工作。那么,有人可以告诉我如何获得价值?任何帮助和建议都将非常可观。由于

+0

它没有任何意义,'array_push($ target,'English');'你为什么需要一个数组的针?你只需要搜索一个字符串的存在权利? – Ghost 2014-09-30 08:41:01

回答

0

试试这个:

$got=false; 
foreach($langs['target'] as $lan=> $langs) { 

      foreach($langs as $lang=> $lan){ 
       if($target[0]==$lan) { 
        $got=true; 
        break; 
       }else{ 
      continue; 
     } 

      } 
    } 
if($got){ 
    echo "got it"; 
}else{ 
    echo "not found"; 
} 

注: in_array不适用于多维数组工作。

0

您必须递归执行此操作,遍历每个数组,因为in_array不会递归搜索。

试试这个:

$target = array(
'Azerbaijani', 
array('Amharic','Burmese'), 
array('English','German') 
); 

function search_recursive($find, $where) { 
foreach ($where as $element) { 
if (is_array($element)) { 
if (search_recursive($find, $element)) 
return true; 
} 
elseif ($find == $element) { 
return true; 
} 
} 
return false; 
} 

if (search_recursive('English', $target)) echo "FOUND"; 
else echo "Not Found"; 

这还没有被彻底的测试,所以一定要正确测试。