Как проверить, находится ли строка в массиве с php? - PullRequest
4 голосов
/ 27 февраля 2012

У меня есть массив, который выглядит следующим образом, когда var_dump:

 array(3) { [0]=> array(3) { ["id"]=> string(1) "3" ["category"]=> string(5) "staff" ["num_posts"]=> string(1) "1" } [1]=> array(3) { ["id"]=> string(1) "1" ["category"]=> string(7) "general" ["num_posts"]=> string(1) "4" } [2]=> array(3) { ["id"]=> string(1) "2" ["category"]=> string(6) "events" ["num_posts"]=> string(1) "1" } }

Мне нужно отобразить значение, если массив не содержит следующую строку: 'hello'

Как это возможно, я пытался использовать in_array, но безуспешно. Помощь оценена.

Ответы [ 5 ]

7 голосов
/ 27 февраля 2012
foreach ($array as $subarray)
{
   if(!in_array('hello', $subarray))
   {
      echo 'echo the value';
   }
}
1 голос
/ 27 февраля 2012

Попробуйте это

$array = array( array("id" => "3","category" => "hello" ,"num_posts" =>  "1" ),
    array( "id"=> "1","category"=> "general" ,"num_posts" => "4" ),
    array( "id"=> "2" ,"category"=> "events","num_posts"=>  "1" ));

foreach($array as $value){
    if(!in_array("hello", $value)){
        var_dump($value);
    }
}

работает

1 голос
/ 27 февраля 2012

Для многомерного массива попробуйте:


function in_array_r($needle, $haystack, $strict = true) {
    foreach ($haystack as $item) {
        if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
            return true;
        }
    }

    return false;
}


0 голосов
/ 27 февраля 2012
$isExistHelloInArray = array_filter($array,function($element) {
    return $element['category'] == 'hello';
});
0 голосов
/ 27 февраля 2012

, если вы хотите искать в каждом измерении, попробуйте это:

function value_exists($array, $search) {
    foreach($array as $value) {
        if(is_array($value)) {
            if(true === value_exists($value, $search)) {
                return true;
            }
        }
        else if($value == $search) {
            return true;
        }
    }

    return false;
}

if(value_exists($my_array, 'hello')) {
    echo 'ok';
}
else {
    echo 'not found';
}
...