多维数组根据条件移除内部数组键


Multidimensional array remove inner array key based on condition

我有一个数组,我想从数组中删除第一个和第二个数组,因为状态

对于第一个和第二个数组为空。

输出应该是Array ([0]=> Array ([a] => 300000[B] => jill[状态]=>"东西"))

有什么想法吗?

array(
        [0] => Array
        (
            [A] => 100000
            [B] => jjohn
    [status]=>
)
[1] => Array
        (
            [A] => 200000
            [B] => jim
    [status]=>
)
[2] => Array
        (
            [A] => 300000
            [B] => jill
    [status]=> "something"
)
)
$array = array_filter($array, function (array $i) { return $i['status']; });

此函数检查(bool)$item['status']是否被求值为True,除非string '0' .

功能:

function ($item) {
    return isset($item['status']) && ($item['status'] || is_string($item['status']));
}

测试代码:

$array = array(
    array(
        'Name' => 'Empty String',
        'status' => '',
    ),
    array(
        'Name' => 'String Zero',
        'status' => '0',
    ),
    array(
        'Name' => 'Integer Zero',
        'status' => 0,
    ),
    array(
        'Name' => 'Bool False',
        'status' => false,
    ),
    array(
        'Name' => 'NULL',
        'status' => null,
    ),
    array(
        'Name' => 'Undefined',
    ),
);
$array = array_values(array_filter($array, function ($item) {
    return isset($item['status']) && ($item['status'] || is_string($item['status']));
}));
var_dump($array);
结果:

array(1) {
  [0]=>
  array(2) {
    ["Name"]=>
    string(11) "String Zero"
    ["status"]=>
    string(1) "0"
  }
}