2017-01-06 6 views
0

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

{"permissions":["1","2"]}

Я пытаюсь проверить, если данная строка находится в массиве разрешений со следующей функцией

function hasPermission($permission) { 
      return in_array($permission, array_column($this->permissions, 'permissions')); 
} 

при вызове функции придав ему строку «1», что возвращать ложь, даже если 1 в массиве разрешений

Любая помощь будет оценена

Благодаря

EDIT

Вот вар самосвала преобразованного массива

array(1) { 
    ["permissions"]=> 
array(2) {[0]=> string(1) "1" 
      [1]=> string(1) "2" 
     } 
} 
+1

вы преобразовать JSON строку в PHP Object/массив перед запуском этого кода – RiggsFolly

+2

Если вы сделали это woild полезно увидеть 'var_dump()' Объекта Считали/Массив – RiggsFolly

+0

I преобразование массива с помощью json_deocde() Здесь дамп var преобразованного массива массив (1) {["permissions"] => array (2) {[0] => string (1) "1" [1] => string (1) "2"}} – Cleggy

ответ

1

Try, как это ...

<?php 
$json = '{"permissions":["1","2"]}'; 
$arr = json_decode($json,true); 
print_r($arr); 
echo in_array(1,$arr['permissions']); // returns 1 if exists 
?> 

Так что ваша функция должна быть такой ....

function hasPermission($permission) { 
      return in_array($permission, $this->permissions['permissions']); 
} 
+0

Это сработало! Большое вам спасибо, что потратил много времени на то, чтобы понять это. – Cleggy

+0

@ Cleggy добро пожаловать и удачи впереди. –

+0

@Cleggy, если это поможет вам принять ответ спасибо. –

0

array_column не поддерживает 1D массивы, он возвращает пустой массив, если это так.

Ваш массив разрешений $ 1D, поэтому просто используйте $this->permissions['permission'] для доступа к нему.

return in_array($permission, $this->permissions['permissions']); 

Пример:

$array = ['permissions' => ['1', '2']]; 
echo (int)in_array('1', array_column($array, 'permissions')); // 0 
echo (int)in_array('1', $array['permissions']); // 1 
0

Попробуйте это будет работать.

$permission = json_decode('{"permissions":["1","2"]}',true); 
echo "<pre>";print_r($permission); 
if(is_array($permission)){ 
echo "this is an array"; 
}else{ 
    echo "Not an array"; 
} 

Благодаря

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