2013-10-23 17 views
6

Ho provato molti modi diversi ma non riesco a disinserire una variabile da un array. Ho iniziato con una stringa ed è esplosa in un array, ora voglio rimuovere Bill. Mi manca qualcosa? Ho visitato php.net e io, ancora bloccato ...unset() non funziona 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

Hai una matrice di nomi come valori, ma stai cercando di usare il valore come 'indice'. Sta cercando dati nella posizione 'Bill', che non esiste. – christopher

+1

unset ($ Allname [2]) -> sta cercando index, not value – pbenard

+1

bill è il valore nella matrice non la chiave dell'array –

risposta

11

Questo perché [ 'Bill'] è il valore della voce matrice, non è l'indice. Che cosa si vuole fare è

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

o vedere questa domanda per una risposta più dettagliata e meglio:

PHP array delete by value (not key)

+0

Grazie a tutte le scene ora ..... Sono stato in grado di realizzare ciò di cui avevo bisogno con il ciclo foreach. Grazie per il link 1intello – Hugo

+0

@Hugo nessun problema;) –

1

Perché non impostato si aspettano una chiave e non un valore.

Bill è il tuo valore.

unset($Allname[2]) 

dopo l'esplodere la matrice si presenta come:

array (

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

Se non conosco la posizione del conto, userei un foreach? – Hugo

+1

ci sono diversi modi per farlo. un ciclo foreach è possibile ma preferire 'array_search()' per ottenere la chiave di Bill. '$ key = array_search ('Bill', $ Allname);' – KURN

1

unset($arr['key']) vengono annullati il ​​chiave. Le chiavi sono 0, 1 ecc., Non "Bill".

Se si desidera rimuovere il valore "Bill", è più facile fare questo:

$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

A volte, sembra come un array, ma può essere una stringa stampata di un array ... - Succede al meglio di noi ...

O in ogni caso controlla che il tuo array sia davvero un array. So che sembra sciocco ma a volte dopo molte ore di schermate, vengono commessi degli errori.

<?php 

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

?> 

Questo emetterà: È una matrice.