2012-01-04 4 views
3

Мой английский не очень жалеет об этом.поиск с in_array в многомерном массиве

У меня есть массив:

Array ([name] => Array 
         ( 
         [0] => Sorry the name is missing! 
         [1] => Sorry the name is to short! 
        ) 
) 

Теперь я хочу, чтобы проверить с in_array для, например, "имя".

if (in_array("name", $false["name"])) { 
echo "the array keys"; 
} 

но это dsnt work. Может ли кто-нибудь помочь мне, пожалуйста? большое спасибо.

+0

Когда вы проверяете * имя *, каков должен быть результат теста? Это * имя * - это массив или строка? – hakre

ответ

10

Try array_key_exists(): link

if(array_key_exists('name', $false['name'])) { 
    echo $false['name'][0]; // or [1] .. or whatever you want to echo 
} 
0

in_array() ищет точное значение. Поэтому вам нужно будет указать "Sorry the name is missing!" вместо "name".

Например:

if (in_array("Sorry the name is missing!", $false["name"])) { 
    echo "the array keys"; 
} 

Где:

$false = array('name' => array( 
    0 => 'Sorry the name is missing!', 
    1 => 'Sorry the name is to short!'), 
); 
0

If you are searching for array key name in your main array:

$arr = array("name" => array( 
         "0" => "Sorry the name is missing!", 
         "1" => "Sorry the name is to short!" 
       )); 

if(array_key_exists('name', $arr)) { 
    print_r($arr['name']); 
} else { 
    echo "array key not found"; 
} 

Demo

Он не найдет имя, если вы будете искать в $ обр [ «имя»], потому что он содержит только и ключи массива на этом уровне.

1

Может быть, вам нужно пройти через массив, а затем проверить его

function in_multiarray($str, $array) 
{ 
    $exists = false; 

    if (is_array($array)) { 
     foreach ($array as $arr): 
      $exists = in_multiarray($str, $arr); 
     endforeach; 
    } else { 
     echo $array . ' = ' . $str . "\n"; 
     if (strpos($array, $str) !== false) $exists = true; 
    } 

    return $exists; 
} 
3

in_array() не работает с многомерными массивами, поэтому не представляется возможным использовать in_array() здесь. Когда вы ищете «имя» в in_array(), он ищет в первом массиве и находит ключ массива с именем «имя».

Лучше использовать array_key_exists Функция. Пример приведен ниже: (. Помните, что это всего лишь предположение, код может меняться)

if(array_key_exists('name', $false['name'])) { 
    echo $false['name'][0]; // or [1] .. or whatever you want to echo 
} 
//$false['name'] array contains your searched data in different keys; 0,1,2,.... 

Вы можете использовать foreach() в цикле первый массив, то поиск с помощью in_array(), но это не будет хороший метод, потому что он будет принимать больше времени, чтобы найти.
удачи :)

0

Если Вы желаете использовать in_array вам просто нужно поставить второй параметр как массив вы определили пример

if(in_array('name',$false){ 
//do your stuff 
print_r($false['name']); //this will print the array of name inclusive of [0] and [1] 
} 

Есть еще пример, приведенный в in_array php manual , Пожалуйста, проверьте это.

Смежные вопросы