Php 从数组中删除

Php 从数组中删除,php,Php,我有一个对象数组: $obj = array(); // add the new items $row = new stdClass(); $row->first = $first; $row->last = $last; $row->phone = $phone; $obj[] = $row; 现在,如果我只有$last的值,有没有一种方法可以删除整个$row对象而不指定每个键/值? 如果它有助于理解,那么如果它是一个mysql语句,它将类似于DELETE*FROM$o

我有一个对象数组:

$obj = array();

// add the new items
$row = new stdClass();
$row->first = $first;
$row->last = $last;
$row->phone = $phone;

$obj[] = $row;
现在,如果我只有$last的值,有没有一种方法可以删除整个$row对象而不指定每个键/值? 如果它有助于理解,那么如果它是一个mysql语句,它将类似于DELETE*FROM$obj,其中$row->last='Thomas'


thx是未设置的$row;你想要什么?但是,如果只是为了节省内存,就不需要这样做。

是unset$row;你想要什么?但是如果你只是为了节省内存,就没有必要这样做。

你需要知道钥匙。但是,如果遍历数组,您可以找到它

/* Your original code: */
$obj = array();

// add the new items
$row = new stdClass();
$row->first = $first;
$row->last = $last;
$row->phone = $phone;

$obj[] = $row;

/* My addition: */
$theOneToDelete = $last;
foreach ($obj as $key => $row) {
   if ($row->last == $theOneToDelete) {
      unset($obj[$key]);
      break;
   }
}

有些数组函数可能有一种更简洁的方法,但这就说明了这一点。

您需要知道关键点。但是,如果遍历数组,您可以找到它

/* Your original code: */
$obj = array();

// add the new items
$row = new stdClass();
$row->first = $first;
$row->last = $last;
$row->phone = $phone;

$obj[] = $row;

/* My addition: */
$theOneToDelete = $last;
foreach ($obj as $key => $row) {
   if ($row->last == $theOneToDelete) {
      unset($obj[$key]);
      break;
   }
}
foreach ($obj as $key => $value) {
  if($obj[$key]->last == $last){
    unset($obj[$key]);
  }
}
对于一些数组函数,可能有一种更简洁的方法,但这就说明了这一点

foreach ($obj as $key => $value) {
  if($obj[$key]->last == $last){
    unset($obj[$key]);
  }
}
哎呀,我忘了将我的响应格式化为代码。我是新来的=P


哎呀,我忘了将我的响应格式化为代码。我是新来的=P

你的意思是从$obj中删除$row???我只是把它放进去了…如果它无助于澄清,那么忽略它。你的意思是从$obj中删除$row???我只是把它放进去了…如果它无助于澄清,那么忽略它。设置不会立即释放内存。在PHP中,当垃圾收集器认为合适时,内存会被释放。我认为这不会取消数组元素的设置,只会取消原始对象的设置。虽然它们在物理上可能暂时是内存中的同一对象,但在这一点上,它们在语义上是分离的。unset不会立即释放内存。在PHP中,当垃圾收集器认为合适时,内存会被释放。我认为这不会取消数组元素的设置,只会取消原始对象的设置。虽然它们在物理上可能暂时是内存中的同一对象,但在这一点上,它们在语义上是分离的。