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']) 取消设置。您的密钥是 01 等,而不是“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 创建的数字键

PHP Unset 正在重置我的会话数组

无法在写入上下文PHP unset()中使用方法返回值[重复]

在哪里可以找到触发 unset() 上的垃圾收集的“低内存”和“空闲 CPU 周期”调用?

unset() 不工作 PHP

如何解决这个 Laravel 会话问题