2013-10-23 20 views
6

Próbowałem na wiele różnych sposobów, ale nie jestem w stanie wyzerować zmiennej z tablicy. Zacząłem od napisu i rozbiłem go na tablicę, teraz chcę usunąć Billa. Czy coś mi brakuje? Odwiedziłem php.net i ja nadal tkwi ...unset() nie działa 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

Masz wiele nazw jako wartości, ale próbujesz użyć wartości jako "indeks". Szuka danych na stanowisku 'Bill', którego nie ma. – christopher

+1

unset ($ Allname [2]) -> szuka indeksu, nie wartości – pbenard

+1

rachunek jest wartością w tablicy, a nie kluczem tablicy –

Odpowiedz

11

To dlatego [ „Bill”] jest wartość wpisu tablicy, a nie indeks. Co chcesz zrobić, to

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

lub zobaczyć to pytanie do bardziej szczegółowej i lepszą odpowiedź:

PHP array delete by value (not key)

+0

Podziękuj wszystkim, co sprawia, że ​​sceny teraz ..... Udało mi się osiągnąć to, czego potrzebowałem z pętlą foreach. Dzięki za link 1intello – Hugo

+0

@ Hugo bez problemu;) –

1

Ponieważ rozbrojony oczekiwać klucza, a nie wartość.

Rachunek to Twoja wartość.

unset($Allname[2]) 

Po eksplodować tablica wygląda następująco:

array (

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

Jeśli nie znam pozycji rachunku, użyłbym foreach? – Hugo

+1

istnieje kilka sposobów, aby to zrobić. pętla foreach jest możliwa, ale ja wolałbym 'array_search()', aby uzyskać klucz Bill. '$ key = array_search ('Bill', $ Allname);' – KURN

1

unset($arr['key']) unsets się kluczową. Twoje klucze to 0, 1 itd., A nie "Bill".

Jeśli chcesz usunąć wartość „Bill”, to najłatwiej to zrobić:

$names   = 'Harry George Bill David Sam Jimmy'; 
$namesArray  = explode(' ', $names); 
$namesWithoutBill = array_diff($namesArray, array('Bill')); 
0

Czasami wygląda jak tablicę, ale może to być wydrukowane ciąg tablicy ... - Zdarza się to najlepszemu z nas ...

Lub w każdym przypadku sprawdź, czy twoja tablica jest naprawdę tablicą. Wiem, że to brzmi głupio, ale czasami po wielu godzinach wyświetlania ekranu popełniane są błędy.

<?php 

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

?> 

To wyświetli: To jest tablica.