2011-01-08 8 views
0

Ich versuche, ein Array basierend auf anderen Array-Werte zu erstellen, indem Sie einen Schlüssel definieren?Erstellen Sie ein Array basierend auf anderen Array-Werten, indem Sie einen Schlüssel definieren?

z.

$old_array = array('hey', 'you', 'testing', 'this'); 

function get_new_array($key) { 
global $old_array; 

//return new array... 
} 

$new_array = get_new_array(2); //would return array('hey, 'you', 'testing'); as its the values of all the keys before the key 2 and the 2 key itself 

Schätzen Sie alle Hilfe! : B

+2

Wenn Sie planen, dies in eine benutzerdefinierte Funktion zu setzen, finde ich es eine schlechte Idee, 'global' zu verwenden. – BoltClock

Antwort

2

Verwendung array_slice():

function get_new_array($key) { 
    global $old_array; 
    return array_slice($old_array, 0, $key+1); 
} 

Einige Vorschläge:

  • Sie wollten die Sub-Array bis zu und einschließlich der Schlüssel zurückzukehren. Es ist weit üblicher, stattdessen zu ohne den Schlüssel zurückzukehren. Daher war die +1 erforderlich.
  • Verwenden $old_array als global ist arm Stil. Ich empfehle es eher als Argument für die Funktion zu übergeben.
  • Da array_slice() bereits tut, was Sie wollen, abgesehen von kleinen Unterschieden, würde ich es direkt nennen, anstatt eine Wrapper-Funktion zu schreiben, die die Funktionalität verbirgt.
+0

+1 Das 'global', das ich in der ursprünglichen Frage sehe, macht mich unruhig obwohl ... – BoltClock

+0

@BoltClock War das Bearbeiten in :) – marcog

1
$new=array_slice($old_array,0,3); 
0

Verwenden array_slice() Funktion:

$input = array("a", "b", "c", "d", "e"); 

$output = array_slice($input, 2);  // returns "c", "d", and "e" 
$output = array_slice($input, -2, 1); // returns "d" 
$output = array_slice($input, 0, 3); // returns "a", "b", and "c" 

Link zu manual.

+1

Es wäre nett, wenn Sie tatsächlich zeigen könnten, wie man es verwendet, um diese spezifische Frage statt zu beantworten Heben Sie nur Beispiele aus dem Handbuch. – BoltClock

+0

@BoltClock: Die Beispiele sind ziemlich einfach und klar! –

+0

@Oli Charlesworth: Sie sind in diesem Fall, denke ich ... – BoltClock

Verwandte Themen