2013-10-23 46 views
6

我嘗試了很多不同的方法,但我不能從數組中取消設置變量。我從一個字符串開始,並將其分解爲一個數組,現在我想刪除Bill。我缺少一些東西?我已經訪問了php.net和我,仍然卡...未設置()不起作用PHP

<!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> 
+3

你有一個名稱數組作爲值,但你試圖使用該值作爲'索引'。它正在查找位置「Bill」的數據,該數據不存在。 – christopher

+1

未設置($ Allname [2]) - >它在尋找索引,不珍惜 – pbenard

+1

紙幣是陣列不是數組 –

回答

11

這是因爲['比爾']是數組項,而不是索引的值。 你想要做什麼是

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

或看到這個問題的更詳細和更好的答案:

PHP array delete by value (not key)

+0

謝謝它現在讓每個場景.....我能夠幫助我什麼,我需要什麼與foreach循環。感謝您的鏈接1intello – Hugo

+0

@虎沒有問題;) –

1

由於未設置期望的關鍵,而不是一個值。

比爾是你的價值。

unset($Allname[2]) 

後您的爆炸數組的樣子:

array (

0 => 'Harry', 
1 => 'George', 
2 => 'Bill', 
... 
) 
+0

如果我不知道法案的立場我會使用一個foreach? – Hugo

+1

有幾種方法可以做到這一點。一個foreach循環是可能的,但我更喜歡'array_search()'獲得比爾的關鍵。 '$ key = array_search('Bill',$ Allname);' – KURN

1

unset($arr['key'])會取消關鍵。您的鑰匙是0,1等,而不是「Bill」。

如果你想刪除「條例」,這是最容易做到這一點:

$names   = 'Harry George Bill David Sam Jimmy'; 
$namesArray  = explode(' ', $names); 
$namesWithoutBill = array_diff($namesArray, array('Bill')); 
2
 
You can unset by array key 
unset($Allname[2]); 
0

有時,它看起來像一個數組,但它可以是一個數組的打印字符串... - 這發生在我們最好的...

或者無論如何檢查你的數組是真的一個數組。 我知道這聽起來很愚蠢,但有時候在很多小時的屏幕時間之後,都會犯錯誤。

<?php 

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

?> 

這將輸出:它是一個數組。