Benennen Sie den Schlüssel in jeder Zeile eines 2D-Arrays um

Lesezeit: 3 Minuten

Benutzer-Avatar von Stef
stef

Wie könnte ich in einem Array wie dem folgenden „fee_id“ in „id“ umbenennen?

Eingabearray:

[
    ['fee_id' => 15, 'fee_amount' => 308.5, 'year' => 2009],
    ['fee_id' => 14, 'fee_amount' => 308.5, 'year' => 2009],
]

Erwartetes Ergebnis:

[
    ['id' => 15, 'fee_amount' => 308.5, 'year' => 2009],
    ['id' => 14, 'fee_amount' => 308.5, 'year' => 2009],
]

  • Stammen diese Daten aus einer Datenbank? Könnten Sie die Abfrage ändern? SELECT fee_id as id, fee_amount as amount, year FROM .....?

    – Gnarf

    6. Februar 2010 um 11:56

  • Ja, aber dieses Array und die Abfrage, die es generiert, werden in der gesamten App verwendet und es ist einfacher, die Ausgabe einfach an einer Stelle zu ändern.

    – stef

    6. Februar 2010 um 13:28

foreach ( $array as $k=>$v )
{
  $array[$k] ['id'] = $array[$k] ['fee_id'];
  unset($array[$k]['fee_id']);
}

Das sollte funktionieren

  • Du willst es wahrscheinlich schaffen foreach( array_keys($array) as $k) oder foreach($array as $k=>$v)

    – Gnarf

    6. Februar 2010 um 11:53

  • Dadurch ändert sich die Reihenfolge: Der neue Schlüssel steht am Ende

    – Oleg

    29. Okt. 2014 um 9:53

  • Warum nicht verwenden? $v['fee_id'] anstatt $array[$k] ['fee_id'] ?

    – YFeizi

    15. Februar 2015 um 8:21


  • Yfeizi, denn dadurch wird nur die temporäre Variable $v geändert, und wir möchten das ursprüngliche Array ändern.

    – pbarney

    19. Juni 2020 um 21:28

Sie könnten dazu array_map() verwenden.

$myarray = array_map(function($tag) {
    return array(
        'id' => $tag['fee_id'],
        'fee_amount' => $tag['fee_amount'],
        'year' => $tag['year']
    ); }, $myarray);

Benutzeravatar von Niels Bom
Niels Bom

$arrayNum = count($theArray);

for( $i = 0 ; $i < $arrayNum ; $i++ )
{
    $fee_id_value = $theArray[$i]['fee_id'];
    unset($theArray[$i]['fee_id']);
    $theArray[$i]['id'] = $fee_id_value;
}

Das sollte funktionieren.

  • Weil es jedes Mal neu zählt?

    – Niels Bom

    6. Februar 2010 um 11:56

  • Ja, vorausgesetzt, er hat ein großes Array, wird es jedes Mal gezählt und die Seite wird langsamer geladen bzw. die Serverlast wird steigen

    – Lamas

    6. Februar 2010 um 11:59

Den aktuellen Wert „fee_id“ in einen neuen Schlüssel namens „id“ kopieren und den vorherigen Schlüssel zurücksetzen?

foreach ($array as $arr)
{
  $arr['id'] = $arr['fee_id'];
  unset($arr['fee_id']);
}

Es gibt keine eingebaute Funktion, die so dünn ist.

Das ist die funktionierende Lösung, ich habe sie getestet.

foreach ($myArray as &$arr) {
    $arr['id'] = $arr['fee_id'];
    unset($arr['fee_id']);
}

  • Beachten Sie, dass die Verwendung von Referenzvariablen in einer solchen for-Schleife eine schlechte Idee sein könnte. Siehe stackoverflow.com/questions/3307409/…

    – Pang

    31. August 2016 um 7:03 Uhr

GabeSullices Benutzeravatar
GabeSullice

Das folgende Snippet benennt einen assoziativen Array-Schlüssel um und behält dabei die Reihenfolge bei (manchmal … müssen wir). Sie können den $value des neuen Schlüssels ersetzen, wenn Sie ein Element vollständig ersetzen müssen.

$old_key = "key_to_replace";
$new_key = "my_new_key";

$intermediate_array = array();
while (list($key, $value) = each($original_array)) {
  if ($key == $old_key) {
    $intermediate_array[$new_key] = $value;
  }
  else {
    $intermediate_array[$key] = $value;
  }
}
$original_array = $intermediate_array;

  • Beachten Sie, dass die Verwendung von Referenzvariablen in einer solchen for-Schleife eine schlechte Idee sein könnte. Siehe stackoverflow.com/questions/3307409/…

    – Pang

    31. August 2016 um 7:03 Uhr

Konvertiert 0->Feld0, 1->Feld1,2->Feld2….

Dies ist nur ein Beispiel, in dem ich einen durch Kommas getrennten Wert in einer Zeichenfolge erhalte, ihn in ein mehrdimensionales Array konvertiere und dann mithilfe der foreach-Schleife den Schlüsselwert des Arrays ändere

<?php

    $str = "abc,def,ghi,jkl,mno,pqr,stu 
    abc,def,ghi,jkl,mno,pqr,stu
    abc,def,ghi,jkl,mno,pqr,stu
    abc,def,ghi,jkl,mno,pqr,stu;

    echo '<pre>';
    $arr1 = explode("\n", $str); // this will create multidimensional array from upper string
    //print_r($arr1);
    foreach ($arr1 as $key => $value) {
        $arr2[] = explode(",", $value);
        foreach ($arr2 as $key1 => $value1) {
            $i =0;
            foreach ($value1 as $key2 => $value2) { 
                $key3 = 'field'.$i;
                $i++;
                $value1[$key3] = $value2;
                unset($value1[$key2]);           
            }
        }
        $arr3[] = $value1;
    }
    print_r($arr3);


   ?>

1453930cookie-checkBenennen Sie den Schlüssel in jeder Zeile eines 2D-Arrays um

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

Privacy policy