Wie entferne ich das erste Element des Arrays, ohne seinen Schlüsselwert zu ändern? [duplicate]

Lesezeit: 3 Minuten

Benutzer-Avatar
Ganesh Babu

Es gibt ein Array in PHP

<?php
$array=array("a"=>"123","b"=>"234","c"=>"345");
array_shift($array);
//array("0"=>"234","1"=>"345");
?>

Wenn ich diese Funktion verwende, wird der Schlüsselwert geändert. Ich möchte, dass mein Schlüsselwert gleich bleibt. Wie kann ich das erste Element entfernen, ohne die Array-Schlüsselwerte zu beeinflussen. Meine Antwort sollte wie sein

array("b"=>"234","c"=>"345");

Hinweis: Bitte verwenden Sie nicht foreach(); Ich möchte dies durch vorhandene Array-Funktionen in PHP tun

Die Funktion array_splice arbeitet für das obige Array. Aber betrachten Sie das folgende Array

<?php
$array = Array
(
    '39' => Array
        (
            'id' => '39',
            'field_id' => '620'
           
        ),

    '40' => Array
        (
            'id' => '40',
            'field_id' => '620',
            'default_value' => 'rrr',
          
));

array_splice($array, 0, 1);
print_r($array);
?>

Es zeigt die Antwort wie folgt:

Array ( [0] => Array ( [id] => 40 [field_id] => 620 [default_value] => rrr ) )

Darf ich den Grund erfahren?? Funktioniert array_splice() nur für eindimensionale Arrays? Jetzt wird der Schlüsselwert zurückgesetzt …

  • Möchten Sie das erste Element unabhängig von seinem Schlüssel entfernen oder das Element mit key = “a” entfernen?

    – Barmar

    2. September 2013 um 16:05 Uhr

  • @Ganesh: Du gibst in deiner Frage ein falsches Beispiel. Was Sie mit dem Beispiel demonstrieren, ist falsch (obwohl Sie immer noch etwas meinen).

    – hakre

    2. September 2013 um 16:10 Uhr

  • @Barmar Ich möchte den ersten Schlüssel und seine Werte eines Arrays entfernen, ohne andere Schlüsselwerte zu beeinflussen. Die Frage, die ich gegeben habe, ist ein Beispiel. Ich muss mit solchen Arrays umgehen.

    – Ganesha Babu

    2. September 2013 um 16:42 Uhr

Benutzer-Avatar
aefxx

Falls Sie nicht wissen, was der erste Artikel ist key ist:

// Make sure to reset the array's current index
reset($array);

$key = key($array);
unset($array[$key]);

  • Für das angegebene Beispiel müssen Sie das Array nicht zurücksetzen (Sie könnten aber auch einfach verwenden array_shift Also … 🙂 )

    – hakre

    2. September 2013 um 16:19 Uhr

  • Nun, offensichtlich ist das Beispiel nur ein Beispiel. Wer würde ein Array erstellen und sofort sein erstes Mitglied entfernen? Sobald mit dem Array gearbeitet wird, können Sie nicht sicher sein, wo sich sein interner Zeiger befindet.

    – aefxx

    2. September 2013 um 16:22 Uhr

  • Ja, du kannst. Es ist ziemlich vorhersehbar. Aber wie sich herausstellt, hat @Ganesh vielleicht wirklich nur ein Beispiel gegeben, das fast nichts mit dem zu tun hat, was er lernen möchte 🙂

    – hakre

    2. September 2013 um 16:23 Uhr

  • @hakre Ich habe jetzt die Frage bearbeitet …

    – Ganesha Babu

    2. September 2013 um 16:40 Uhr

  • @ Ganesh Nein, current() liefert nicht garantiert den Schlüssel des ersten Array-Mitglieds (obwohl dies meistens der Fall ist). Wenn Sie auf der sicheren Seite sein und schwer nachvollziehbare Fehler vermeiden möchten, verwenden Sie meinen Ansatz.

    – aefxx

    3. September 2013 um 8:46 Uhr

Benutzer-Avatar
Sybear

$array=array("a"=>"123","b"=>"234","c"=>"345");
unset($array["a"]) ;
var_dump($array) ;

Außerdem, welche Version von PHP verwenden Sie?

array_shift funktioniert gut für mich mit String-indizierten Arrays und ich bekomme das erwartete Ergebnis.

  • array_shift setzt die Array-Schlüsselwerte zurück …

    – Ganesha Babu

    2. September 2013 um 16:08 Uhr

  • @Ganesh: Nicht für das Beispiel Du gabst.

    – hakre

    2. September 2013 um 16:12 Uhr

Die Lösung für diese Frage lautet wie folgt:

<?php

unset($array[current(array_keys($array))]);

?>

Es entfernt das erste Element, ohne die Schlüsselwerte zu beeinflussen.

  • $array[current(array_keys($array))] ist viel länger als nötig. Der bessere Weg ist $array[key($array)].

    – Spex

    4. Dezember 2013 um 20:12 Uhr

<?php function array_kshift(&$array)
{
list($k) = array_keys($array);
$r  = array($k=>$array[$k]);
unset($array[$k]);
return $r;
}

// test it on a simple associative array
$array=array("a"=>"123","b"=>"234","c"=>"345");

array_kshift($array);
print_r($array);
?>

1227800cookie-checkWie entferne ich das erste Element des Arrays, ohne seinen Schlüsselwert zu ändern? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy