используя диапазон в массиве - PullRequest
0 голосов
/ 02 ноября 2011

Как я могу сделать что-то подобное

$ranges = array(
    range(34, 37) => 'Group A',
    range(38, 39) => 'Group B',
    range(40, 41) => 'Group C',
);

foreach($ranges as $range_key => $range_value) {
    echo "K: ".$range_key." V: ".$range_value."\n";
}

Я получаю

Предупреждение: недопустимый тип смещения

Ответы [ 4 ]

4 голосов
/ 02 ноября 2011

range() возвращает массив, который нельзя использовать в качестве ключа массива. Вам нужно будет использовать каждое значение в возвращаемом массиве в качестве ключа, например:

foreach ( range(34, 37) as $value ) {
    $ranges[$value] = 'Group A';
}
foreach ( range(38, 39) as $value ) {
    $ranges[$value] = 'Group B';
}
foreach ( range(40, 41) as $value ) {
    $ranges[$value] = 'Group C';
}
1 голос
/ 02 ноября 2011

может быть, это поможет

$ranges = array_fill( 34, 37, 'Group A' );
print_r( $ranges );
1 голос
/ 02 ноября 2011
function make_range( $first, $last, $value, &$data_array )
{
    if ( $last < $first ) return;

    for( $index = $last; $index >= $first; --$index )
    $data_array[ $index ] = $value;

    ksort( $data_array, SORT_NUMERIC );
}
0 голосов
/ 02 ноября 2011

Я думаю, что у вас есть ваши ключи и значения в обратном направлении

$ranges = array(
    'Group A' => range(34, 37),
    'Group B' => range(38, 39),
    'Group C' => range(40, 41),
);

foreach($ranges as $range_key => $range_value) {
    echo "K: ".$range_key." V: ";
    print_r($range_value)
    echo "\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...