PHP-从多维数组中删除条目

PHP-从多维数组中删除条目,php,multidimensional-array,Php,Multidimensional Array,我有这样一个数组: $_SESSION['food'] = array( // ARRAY 1 array( "name" => "apple", "shape" => "round", "color" => "red" ), // ARRAY 2 array( "name" => "banana", "shape" => "long", "color" => "yello

我有这样一个数组:

$_SESSION['food'] = array( 

// ARRAY 1
array(
      "name" => "apple",
      "shape" => "round",
      "color" => "red"
  ),

// ARRAY 2
   array(
      "name" => "banana",
      "shape" => "long",
      "color" => "yellow"
  )
);
我想搜索所有子数组中的所有键,如果找到搜索词,则删除整个子数组

因此,基本上:

  • 如果搜索“long”,将删除整个阵列2
  • 如果搜索“apple”,则会删除整个阵列1
  • 我将如何做到这一点


    谢谢

    这应该可以做到:

    foreach ($array as $key => $value) {
        foreach ($value as $child_value) {
            if ($child_value == $search_term) {
                unset($array[$key]);
                continue 2;
            }
        }
    }
    

    根据有多少尺寸标注,可以使用

    我尚未测试以下各项,但它应该可以工作:

    $unset = array_search('apple', $_SESSION['food']);
    unset($_SESSION['food'][$unset]);
    
    给你:

    <?php
    function deleteObjWithProperty($search,$arr)
      {
      foreach ($arr as &$val)
        {
        if (array_search($search,$val)!==false)
          {
          unlink($val);
          }
        }
      return $arr;
      }
    ?>
    
    
    
    $\u会话['food']=array(
    //数组1
    排列(
    “名称”=>“苹果”,
    “形状”=>“圆形”,
    “颜色”=>“红色”
    ),
    //阵列2
    排列(
    “名称”=>“香蕉”,
    “形状”=>“长”,
    “颜色”=>“黄色”
    )
    );
    回显“”。打印($会话['food']);
    $arr_food=array();
    $search_term='apple';
    foreach($_会话['food']作为$arr){
    如果($arr['name']==$search\u term){
    未结算($arr);
    }
    $arr_food[]=$arr;
    }
    $\u会话['food]=$arr\u food;
    回显“”。打印($会话['food']);
    
    这不起作用。数组搜索只搜索数组的第一级。谢谢大家。我无法让任何示例正常工作,但最后我通过为每个子数组分配一个关联键对其进行了排序,这使我很容易找到需要删除的子数组。谢谢
    $_SESSION['food'] = array( 
    
    // ARRAY 1
    array(
          "name" => "apple",
          "shape" => "round",
          "color" => "red"
     ),
    
    // ARRAY 2
    array(
         "name" => "banana",
         "shape" => "long",
         "color" => "yellow"
      )
    );
    
    echo '<pre>'.print_r($_SESSION['food']).'</pre>';
    
    $arr_food = array();
    $search_term = 'apple';
    
    foreach($_SESSION['food'] AS $arr) {
       if($arr['name'] == $search_term) {
        unset($arr);
      }
    $arr_food[] = $arr;
    }
    
    $_SESSION['food'] = $arr_food;
    echo '<pre>'.print_r($_SESSION['food']).'</pre>';