2016-04-18 5 views
1

Ich möchte ein Element aus einem Array entfernen. Ich kann schreiben:Php, Schlüssel aus einem Array red-handed entfernen

$item = array(
    'id' => 1 
    'name' => 'name' 
); 

$item2 = $item; 
unset($item2['id']); 
$names[] = $item2; 

aber die letzten drei Zeilen sind etwas "mühsam", sooer un elegant. Kann es gelöst werden, ohne $ item2 zu erstellen? Etwas wie:

$item = array(
    'id' => 1 
    'name' => 'name' 
); 

$names[] = array_ignore_index('id', $item); 
+0

Sie können ungesetzt tun ($ item [ 'id']); –

+0

und nach dem Deaktivieren können Sie array_values ​​($ array) zum erneuten Indizieren verwenden. – IceManSpy

+1

"Red Handed" ...? :) – deceze

Antwort

1

Der kürzeste ist aus der Box-Lösung mit einer diff der Array-Schlüssel zu erstellen:

$names[] = array_diff_key($item, array_flip(['id'])); 

http://php.net/array_diff_key See.

3

Von Ihren Codes kann ich sehen, dass Sie versuchen, die Namen [] von Artikel-Array zu bekommen. Eine mögliche einfache Lösung für dieses spezielle Szenario:

Zum Beispiel, wenn Sie:

$items = array(
    array(
     //this is your item 1 
     'id' => 1, 
     'name' => 'name1' 
    ), 
    array(
     //this is item 2 
     'id' => 2, 
     'name' => 'name2' 
    ) 
); 

und Sie die Namen im Namen Array abzurufen.

Sie können einfach tun:

$names = array_column($items, 'name'); 

Es wird zurück:

Array 
(
    [0] => "name1" 
    [1] => "name2" 
) 

Bitte beachten Sie, diese Lösung am besten geeignet für dieses spezielle Szenario ist, kann es nicht Ihr aktuelles Szenario paßt abhängig.

1
function array_ignore_index($id,$item){ ///function 
    unset($item[$id]); 
    return $item; 
    } 
$a=array('id'=>1, 
    'name'=>'name'); 
$b=array_ignore_index('name',$a); 
echo $b['name']; //create error id is not present 

Hier ist der Code für den Betrieb erforderlich ..

0

können Sie verwenden unset array column

-Code ist

unset($item['id']); 

es zu testen

print_r($item); 
Verwandte Themen