Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann ich ein Array mit negativen ganzzahligen Schlüsselwerten neu indizieren, sodass das Element 0,1,2,3,-1 nach -1,0,1,2,3 sortiert und dann in 0,1,2,3 neu nummeriert wird? ,4?

Angenommen, ich habe Folgendes:

$arr = [];
$arr[0] = 'second';
$arr[-1] = 'first';

So ändern Sie es in $arr[0 => 'first', 1 => 'second']

Das ist das Beste, was ich mir ausgedacht habe:

$new = [];
foreach ($arr as $key => $value) {
    $new[$key + 1] = $value;
}

ksort($new);

Aber wie bei Arrays in PHP frage ich mich, ob es tatsächlich eine einfache integrierte Funktion gibt, die ich verwenden kann?

P粉198670603P粉198670603373 Tage vor571

Antworte allen(2)Ich werde antworten

  • P粉441076405

    P粉4410764052023-09-13 10:23:40

    我忍不住想知道您的目标是否只是在数组的开头插入一个值,也许您正在寻找array_unshift()

    所以而不是

    $arr[-1] = 'first';
    

    ...然后排序,你可以这样做

    array_unshift($arr, 'first');
    

    这会在索引 0 处插入 'first' 并将数组中每个现有的、按数字索引的项目向上移动一个。

    Antwort
    0
  • P粉107991030

    P粉1079910302023-09-13 10:07:27

    使用 ksort 对数组进行排序,然后应用 array_values到它。它将重新索引从 0 开始的键:

    $arr = [];
    $arr[0] = 'second';
    $arr[-1] = 'first';
    
    ksort($arr);
    $result = array_values($arr);

    Antwort
    0
  • StornierenAntwort