根据输入删除特定值索引

时间:2016-07-27 11:14:26

标签: php arrays

当我知道元素名称时,如何从数组中删除元素?例如:

我有一个数组:

[troli] => Array (
    [fruit] => Array (
        [0] => Array (
            [name] => apple
            [foo] => bar
            )
        [1] => Array (
            [name] => banana
            [foo] => bar
            )
        )
    [vegetables] => Array (
        [0] => Array (
            [name] => tomatoes
            [foo] => bar
            )
        [1] => Array (
            [name] => asparagus
            [foo] => bar
            )
        )
    )
  1. 用户输入apple
  2. [troli][fruit][0]已删除。

    1. 用户输入asparagus
    2. [troli][vegetables][1]已删除。

2 个答案:

答案 0 :(得分:1)

使用array_filter函数的解决方案:

$arr = ['troli' => Array(
    'fruit' => Array(
        0 => Array(
            'name' => 'apple'
        ),
        1 => Array(
            'name' => 'banana'
        )
    ),
    'vegetables' => Array(
        0 => Array(
            'name' => 'tomatoes'
        ),
        1 => Array(
            'name' => 'asparagus'
        )
    )
)];

$itemToRemove = "asparagus";
foreach ($arr['troli'] as $k => &$v) {
    $v = array_filter($v, function($v) use($itemToRemove){ 
        return $v['name'] != $itemToRemove; 
    });
}

print_r($arr);

答案 1 :(得分:0)

您可以将Null保存在其位置,然后在其上使用array_filter来删除空数据。将结果存储在您想要的变量中。

对于这种情况,使用foreach运行循环。检查值是否与输入值匹配。如果匹配将其替换为null并应用array_filter()。