2011-01-08 2 views
0

Я пытаюсь создать массив, основанный на других значениях массивов, определяя ключ?Создайте массив, основанный на других значениях массивов, определяя ключ?

E.g.

$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 

Цените всю помощь! : B

+2

Если вы планируете поместить это в пользовательскую функцию, мне кажется, что использовать «глобальную». – BoltClock

ответ

2

array_slice() Использование:

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

Некоторые предложения:

  • Вы хотели вернуться в суб-массив до и включая клавишу. Это гораздо чаще, чем возврат к , за исключением ключа. Следовательно, +1 был необязательным.
  • Использование $old_array как глобальный плохой стиль. Я рекомендую передать его как аргумент функции.
  • С array_slice() уже делает то, что вы хотите, за исключением незначительных отличий, я бы назвал это напрямую, а не писал функцию-оболочку, которая скрывает функциональность. Функция
+0

+1 «Глобальный», который я вижу в оригинальном вопросе, заставляет меня беспокоиться, хотя ... – BoltClock

+0

@BoltClock Редактировал это в :) – marcog

0

Использование array_slice():

$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" 

Ссылка на manual.

+1

Было бы неплохо, если бы вы могли показать, как использовать его для ответа на этот конкретный вопрос, а не просто поднимая примеры из руководства. – BoltClock

+0

@BoltClock: примеры довольно просты и понятны! –

+0

@ Oli Charlesworth: Они в этом случае, я думаю ... – BoltClock

Смежные вопросы