13

我尝试了许多不同的方法,但我无法从数组中取消设置变量。我从一个字符串开始并将其分解为一个数组,现在我想删除 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>   
4

5 回答 5

17

那是因为 ['Bill'] 是数组条目的值,而不是索引。你想做的是

unset($Allname[2]); //Bill is #3 in the list and the array starts at 0.

或查看此问题以获得更详细和更好的答案:

PHP数组按值删除(不是键)

于 2013-10-23T08:59:39.163 回答
1

unset($arr['key'])取消设置密钥。你的钥匙是01等等,而不是“比尔”。

如果要删除“Bill”,最简单的方法是:

$names            = 'Harry George Bill David Sam Jimmy';
$namesArray       = explode(' ', $names);
$namesWithoutBill = array_diff($namesArray, array('Bill'));
于 2013-10-23T09:04:07.107 回答
1

因为未设置期望一个键而不是一个值。

比尔是你的价值。

unset($Allname[2])

爆炸后,数组看起来像:

array (

0 => 'Harry',
1 => 'George',
2 => 'Bill',
...
)
于 2013-10-23T08:59:53.230 回答
1
您可以通过数组键取消设置
未设置($Allname[2]);
于 2013-10-23T09:09:03.503 回答
0

有时,它看起来像一个数组,但它可以是一个数组的打印字符串...... - 它发生在我们中最好的人身上......

或者在任何情况下检查您的数组是否真的是一个数组。我知道这听起来很傻,但有时经过几个小时的屏幕时间后,会犯错误。

<?php

$MyArray = array('0' => 'this','1' => 'is','2' => 'an array');
echo is_array($MyArray) ? 'It Is an Array' : 'not an Array';

?>

这将输出:它是一个数组。

于 2017-10-08T20:42:15.013 回答