unset() 不工作 PHP
Posted
技术标签:
【中文标题】unset() 不工作 PHP【英文标题】:unset( ) not working PHP 【发布时间】:2013-11-01 11:11:11 【问题描述】:我尝试了许多不同的方法,但无法从数组中取消设置变量。我从一个字符串开始并将其分解为一个数组,现在我想删除 Bill。我错过了什么?我访问了 php.net,但我仍然卡住了......
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<?php
$names = "Harry George Bill David Sam Jimmy";
$Allname = explode(" ",$names);
unset($Allname['Bill']);
sort($Allname);
$together = implode("," ,$Allname);
echo "$together";
?>
</body>
</html>
【问题讨论】:
您有一个名称数组作为值,但您试图将该值用作index
。它正在寻找不存在的位置Bill
的数据。
unset($Allname[2]) -> 它在寻找索引,而不是值
bill 是数组中的值而不是数组的键
$key = array_search('Bill', $Allname); if ($key !== false) unset($Allname[$key]);
旁注:您可以随时使用print_r()
或var_dump()
进行调试。
【参考方案1】:
那是因为 ['Bill'] 是数组条目的值,而不是索引。 你想做的是
unset($Allname[2]); //Bill is #3 in the list and the array starts at 0.
或查看此问题以获得更详细和更好的答案:
PHP array delete by value (not key)
【讨论】:
感谢它现在制作的每一个场景......我能够通过 foreach 循环完成我需要的东西。感谢您的链接 1intello【参考方案2】:因为未设置需要一个键而不是一个值。
比尔是你的价值。
unset($Allname[2])
你的爆炸后数组看起来像:
array (
0 => 'Harry',
1 => 'George',
2 => 'Bill',
...
)
【讨论】:
如果我不知道 bill 的位置,我会使用 foreach 吗? 有几种方法可以做到这一点。一个 foreach 循环是可能的,但我更喜欢array_search()
来获取比尔的密钥。 $key = array_search('Bill', $Allname);
【参考方案3】:
unset($arr['key'])
取消设置键。您的密钥是 0
、1
等,而不是“Bill”。
如果你想删除 value "Bill",这样做是最简单的:
$names = 'Harry George Bill David Sam Jimmy';
$namesArray = explode(' ', $names);
$namesWithoutBill = array_diff($namesArray, array('Bill'));
【讨论】:
【参考方案4】: 您可以通过数组键取消设置 未设置($Allname[2]);【讨论】:
【参考方案5】:有时,它看起来像一个数组,但它可以是一个数组的打印字符串...... - 它发生在我们最好的人身上......
或者在任何情况下检查你的数组是否真的是一个数组。 我知道这听起来很傻,但有时在屏幕使用数小时后,就会出现错误。
<?php
$MyArray = array('0' => 'this','1' => 'is','2' => 'an array');
echo is_array($MyArray) ? 'It Is an Array' : 'not an Array';
?>
这将输出:It Is an Array.
【讨论】:
以上是关于unset() 不工作 PHP的主要内容,如果未能解决你的问题,请参考以下文章
无法在写入上下文PHP unset()中使用方法返回值[重复]