基于条件的多维数组上的PHP数组_filter()

基于条件的多维数组上的PHP数组_filter(),php,arrays,Php,Arrays,我拥有以下用户阵列: $users = [ [name => 'Alice', age => 22], [name => 'Bob', age => 23], [name => 'Charlie', age => 19] ]; 我想创建一组至少20岁的用户。我试过: $allowed_users = array_filter($users, function($user) { return $user->age >= 20; })

我拥有以下用户阵列:

$users = [
  [name => 'Alice', age => 22],
  [name => 'Bob', age => 23],
  [name => 'Charlie', age => 19]
];
我想创建一组至少20岁的用户。我试过:

$allowed_users = array_filter($users, function($user) {
  return $user->age >= 20;
});
var_dump($allowed_users);

返回一个空数组。我认为回调函数有问题。

您可以使用以下代码:

function onStart(){
    $users = [
      ['name' => 'Alice', 'age' => 22],
      ['name' => 'Bob', 'age' => 23],
      ['name' => 'Charlie', 'age' => 19]
    ];

    $allowed_users = array_filter($users, function($user) {
      return $user['age'] >= 20;
    });
    var_dump($allowed_users);

}

您可以使用以下代码:

function onStart(){
    $users = [
      ['name' => 'Alice', 'age' => 22],
      ['name' => 'Bob', 'age' => 23],
      ['name' => 'Charlie', 'age' => 19]
    ];

    $allowed_users = array_filter($users, function($user) {
      return $user['age'] >= 20;
    });
    var_dump($allowed_users);

}

您正在对数组使用对象表示法。这是一个简单的解决方案:

$users = [
  ['name' => 'Alice', 'age' => 22],
  ['name' => 'Bob', 'age' => 23],
  ['name' => 'Charlie', 'age' => 19]
];

$allowed_users = array_filter($users, function($user) {
  return $user['age'] >= 20;
});
var_dump($allowed_users);

尽管这本身不是一个错误,但请在键中使用引号,否则解释器将抛出一个通知。

您将对象表示法用于数组。这是一个简单的解决方案:

$users = [
  ['name' => 'Alice', 'age' => 22],
  ['name' => 'Bob', 'age' => 23],
  ['name' => 'Charlie', 'age' => 19]
];

$allowed_users = array_filter($users, function($user) {
  return $user['age'] >= 20;
});
var_dump($allowed_users);

尽管这本身不是一个错误,但在键中使用引号,否则解释器将抛出一个通知。

您需要使用数组语法访问数组成员,您使用的是对象语法

<?php
$users = [
    ['name' => 'Alice', 'age' => 22],
    ['name' => 'Bob', 'age' => 23],
    ['name' => 'Charlie', 'age' => 19]
];

$allowed_users = array_filter($users, function($user) {
    return ($user['age'] >= 20);
});

var_dump($allowed_users);

您需要使用数组语法访问数组成员,因为您使用的是对象语法

<?php
$users = [
    ['name' => 'Alice', 'age' => 22],
    ['name' => 'Bob', 'age' => 23],
    ['name' => 'Charlie', 'age' => 19]
];

$allowed_users = array_filter($users, function($user) {
    return ($user['age'] >= 20);
});

var_dump($allowed_users);

首先,每个子用户数组的键不是用双引号或单引号括起来的

$users = [
   ['name' => 'Alice', 'age' => 22],
   ['name' => 'Bob', 'age' => 23],
   ['name' => 'Charlie', 'age' => 19]
];
并且必须使用括号中的键访问每个子数组键
$users[1]['name']
返回第一个子数组中第一个用户的名称

$allowed_users = array_filter($users, function($user) {
  return $user['age'] >= 20;
});

首先,每个子用户数组的密钥不是用双引号或单引号括起来的

$users = [
   ['name' => 'Alice', 'age' => 22],
   ['name' => 'Bob', 'age' => 23],
   ['name' => 'Charlie', 'age' => 19]
];
并且必须使用括号中的键访问每个子数组键
$users[1]['name']
返回第一个子数组中第一个用户的名称

$allowed_users = array_filter($users, function($user) {
  return $user['age'] >= 20;
});