2015-05-29 5 views
-1

У меня есть два массива, которые содержат некоторые данные, которые определяют, имеет ли пользователь доступ к этой статье. Статья будет помечена клиенту, то есть клиенту, клиенту и пользователю при создании будет назначен тег доступа клиента. Я хочу сравнить оба массива, и если у них есть по крайней мере один, я дам им доступ, если нет, тогда они будут перенаправлены.Сравните два массива для значения

Массив структурирован, как показано ниже:

array(1) { 
    [0] "ClientA" 
} 

array(3) { 
    [0] "ClientA" 
    [1] "ClientB" 
    [2] "ClientC" 
} 

Я пытался использовать in_array, но это возвращается как ложное, например,

//$articleClient is the array with one value and $client is the 
//array with 3 values 
if (!in_array($articleClient, $client)) { 
    dd('no access'); 
} 

Любые идеи о том, как я могу сравнить массивы, чтобы увидеть, присутствует ли хотя бы одно из значений?

+0

Посмотрите array_intersect' – Ankh

+0

Вы не можете проверить два массива с помощью функции 'in_array(). Пожалуйста, см. Документацию in_array –

+1

['in_array()'] (http://php.net/manual/en/function.in-array.php) -> Игла должна быть строкой или целым числом. Это не может быть массив – Rizier123

ответ

2

использовать функцию array_intersect функции в PHP. Например:

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); 
$a2=array("e"=>"red","f"=>"green","g"=>"blue"); 

$result=array_intersect($a1,$a2) 

if (count($result)>=1) 
{ 
    //give access to the user 
} 

ссылка: http://www.w3schools.com/php/func_array_intersect.asp

+0

отлично работает! будет принимать ответ, когда таймер заканчивается – 001221

+0

@ g_9020, спасибо :) –

1

Использование array_intersect() функция

1
$result = array_intersect($array1, $array2); 

if(sizeof($result)>0) 
{ 
//match 
}else 
{ 
//no match 
} 
1

Попробуйте

$common = array_intersect($articleClient, $client)  
if (count($common) < 1) { 
      dd('no access'); 
     } 
Смежные вопросы