PHP erstellt ein Array, in dem Schlüssel und Wert gleich sind

Lesezeit: 1 Minute

Benutzer-Avatar
Ozzy

Ich benutze die range() Funktion zum Erstellen eines Arrays. Allerdings möchte ich die keys gleich sein wie die value. Das ist ok, wenn ich es tue range(0, 10) wie der Index beginnt 0aber wenn ich es tue range(1, 11)der Index beginnt immer noch mit 0so endet es 0=>1 wann ich es haben möchte 1=>1

Wie kann ich verwenden range() um ein Array zu erstellen, in dem die key ist das gleiche wie die value?

  • Warum den Schlüssel nicht einfach gar nicht verwenden?

    – Ignacio Vazquez-Abrams

    19. März 2011 um 5:22 Uhr

  • Ich verwende eine Bibliothek, die ich nicht ändern kann, die dies erfordert >.<

    – Ozzy

    19. März 2011 um 6:07 Uhr

  • Mögliches Duplikat von Wie erstelle ich ein Array für einen Wertebereich mit Schlüsseln mit PHP?

    – Wallace Maxters

    13. Januar 2016 um 11:24 Uhr

Benutzer-Avatar
Mason

Wie wäre es mit array_combine?

$b = array_combine(range(1,10), range(1,10));

  • Wie gibt Range Array-Werte zurück? Wenn wir den Bereich (1,10) echoen, wird der vollständige Inhalt angezeigt? verwirrender Typ?

    – Nandakumar

    18. November 2013 um 6:24 Uhr

  • array_combine($r = range(1, 10), $r) Rückruf vermeiden range in 2 mal.

    – Wallace Maxters

    13. Januar 2016 um 11:20 Uhr

Benutzer-Avatar
Smolla

Oder du hast es so gemacht:

$b = array_slice(range(0,10), 1, NULL, TRUE);

Die Ausgabe finden Sie hier: http://codepad.org/gx9QH7ES

Dafür gibt es keine Out-of-the-Box-Lösung. Sie müssen das Array selbst erstellen, etwa so:

$temp = array();
foreach(range(1, 11) as $n) {
   $temp[$n] = $n;
}

Aber noch wichtiger, warum brauchst du das? Sie können einfach den Wert selbst verwenden?

<?php
function createArray($start, $end){
  $arr = array();
  foreach(range($start, $end) as $number){
    $arr[$number] = $number;
  }
  return $arr;
}

print_r(createArray(1, 10));
?>

Siehe Ausgabe hier: http://codepad.org/Z4lFSyMy

<?php

$array = array();
foreach (range(1,11) as $r)
  $array[$r] = $r;

print_r($array);

?>

Benutzer-Avatar
Wallace Maxters

Erstellen Sie eine Funktion, um dies zu tun:

if (! function_exists('sequence_equal'))
{
    function sequence_equal($low, $hight, $step = 1)
    {
        return array_combine($range = range($low, $hight, $step), $range);
    }
}

Verwendung:

print_r(sequence_equal(1, 10, 2));

Ausgabe:

array (
  1 => 1,
  3 => 3,
  5 => 5,
  7 => 7,
  9 => 9,
)

In PHP 5.5 >= können Sie Generator verwenden, um dies zu tun:

function sequence_equal($low, $hight, $step = 1)
{
    for ($i = $low; $i < $hight; $i += $step) {

        yield $i => $i;
    }
}

1289330cookie-checkPHP erstellt ein Array, in dem Schlüssel und Wert gleich sind

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

Privacy policy