从数组中删除$ key会清除该数组

时间:2014-07-28 14:58:54

标签: php

以下代码使用数组来搜索数组中的ID是否与$rmid匹配。如果为true,则删除整个正确的密钥。

$rmid = 1;
$data = $db['refs'];
// remove element
foreach( $data as $k => $v ) {
  if( in_array( $rmid, $v ) ) {
    unset( $data[$k] );
  }
}

Hovewer,如果将1传递给$rmid,它会删除数组中的所有键!不是唯一一个$rmid = 1。我的代码出了什么问题?

修改

哎呀。发布后我刚刚意识到:

if( $rmid == $v['id'] ) {
  unset( $data[$k] );
}

感谢您的努力!

1 个答案:

答案 0 :(得分:1)

使用:

if( in_array( $rmid, $v, true ) ) {

第三个参数强制执行===而不是==,1计算结果为true,但大多数其他事情也是如此,在PHP中松散。 [==用于比较两种相同类型的东西,但是当它进行类型转换时,它会有一些奇怪的怪癖]