Читать из группового массива - PullRequest
0 голосов
/ 12 января 2012
+---------------+-----------------+
| Type          |  Price          |
+---------------+-----------------+
| Music         |  19.99          |
| Music         |   3.99          |
| Music         |  21.55          |
| Toy           |  89.95          |
| Toy           |   3.99          |
| Phones        |  99.99          |
| Phones        |  89.99          |
+---------------+-----------------+

У меня есть приведенные выше данные, как показано ниже с использованием этого кода:

// Get the sum
$group = array();
foreach($rows as $r){
  $group[$r->type] = $group[$r->Type] + $r->Price;
}

// Display
foreach($group as $type=>$price){
  echo "Type:".$type." Price: ".$price;
}

Результат:

Music  | 45.53
Toy    | 93.94
Phones | 189.98

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

Ответы [ 3 ]

4 голосов
/ 12 января 2012

Попробуйте использовать array_slice();

//this will create new array without first element
$new_group = array_slice($group, 1);

А теперь переберите $new_group, как и раньше.

2 голосов
/ 12 января 2012

Если память не имеет значения (массив не очень большой), используйте array_slice как , предложенное Питером Крейчи . Однако, если является проблемой, вам следует избегать дублирования всех этих данных, просто пропустив первый элемент:

$first = true;
foreach ($group as $type=>$price) {
    if ($first) {
        $first = false;
        continue;
    }
    echo "Type:", $type, " Price: ", $price;
}

Я использую этот метод, а не прямой числовой индекс, поскольку нет никакой гарантии, что индексы без пробелов. В качестве альтернативы можно использовать функции внутреннего указателя, например, next , но они устарели в этом возрасте интерфейса Iterator .

также, как отобразить только одну запись из массива

Это зависит от того, по каким критериям вы хотите получить к нему доступ. Если вы хотите сделать это по типу, вы можете просто:

echo $group['Music'];
1 голос
/ 12 января 2012

Попробуйте array_shift($group), а затем foreach().

Из документации array_shift () :

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...