Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组未设置键_Php_Arrays - Fatal编程技术网

Php 数组未设置键

Php 数组未设置键,php,arrays,Php,Arrays,直截了当地说 我有一个数组($is\u anonymous\u ari)如下所示: array ( [80] => 1 [57] => 1 [66] => [60] => [90] => 1 ) 还有另一个数组($user\u id\u ary)如下所示: array ( [0] => 80 [1] => 30 [2] => 57 [3] => 89 [4] => 66 [5] =>

直截了当地说

我有一个数组(
$is\u anonymous\u ari
)如下所示:

array (
  [80] => 1
  [57] => 1
  [66] =>
  [60] => 
  [90] => 1
)
还有另一个数组(
$user\u id\u ary
)如下所示:

array (
  [0] => 80
  [1] => 30
  [2] => 57
  [3] => 89
  [4] => 66
  [5] => 60
  [6] => 90
)
我需要根据第一个数组取消设置
$user\u id\u ary
上的值。因此,如果
$is\u anonymous\u ary
中的值为1(true),则从该数组中获取密钥,对照
$user\u id\u ary
检查,并取消设置
$user\u id\u ary
中的密钥,该密钥具有
$is\u anonymous\u ary
中的密钥值

我的描述有点复杂,下面是我需要最终结果的方式:

user_id_ary = array(
  [0] => 30
  [1] => 89
  [2] => 66
  [3] => 60
)
正如您所看到的,
$is\u anonymous\u ary
中具有
TRUE
值的所有键都在第二个数组中消失。其中第一个数组中的键作为第二个数组中的值

希望我说清楚。

试试

$user_id_ary = array_filter($user_id_ary, function($var) use ($is_anonymous_ary) {
  return !(isset($is_anonymous_ary[$var]) && $is_anonymous_ary[$var] === 1);
});
多么容易:)


如果这不起作用,尝试迭代用户id数组中的每个元素

这难道不能通过基于
===
1的简单循环相交来删除吗?我不知道,因此有这个问题。为什么返回?我不是在函数内部工作!你能解释一下你的代码是做什么的吗?@Dugi你看过手册了吗?元素make The callback return false将被删除。@Dugi返回决定是否根据该条件筛选数组
array\u filter
,不带该函数,将删除空值,该函数将根据索引设置的位置删除,并且
==
1将相同的比较更改为
=
后,您的答案有效。谢谢。@Dugi,这意味着它是数组中的字符串
'1'
而不是整数
1
。我需要继续使用$user\u id\u ary作为变量名,因为它在多个地方使用了不止一次。有没有任何建议不能摆脱我当前的$user\u id\u ary?
$user_id_ary = array_diff($user_id_ary, array_keys(array_filter($is_anonymous_ary)));
foreach($user_id_ary as $id){
   if($is_anonymous_ary[$id] == '1'){
      unset($d);
   }       
}
$user_id_ary = array_diff($user_id_ary, array_keys(array_filter($is_anonymous_ary)));