2012-01-12 4 views
0
+---------------+-----------------+ 
| 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), начиная со второй записи, а также как отображать только одну запись из массива.

ответ

4

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

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

И теперь перебрать $new_group, как и прежде.

+0

Замечательный ответ. Я собирался отредактировать его, чтобы установить смещение в 0 и длину до 1, пока не понял, что метод возвращает извлеченные значения. – yoshi

+0

Спасибо, Питер, это работает как шарм. Большое спасибо за входных парней – echez

1

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

От array_shift() documentation:

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

2

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

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

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

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

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

echo $group['Music']; 
+0

Я довольно новичок в этом и не мог понять, как реализовать ваш подход. Все равно спасибо. Я уверен, что это поможет в будущем и определенно поможет кому-то другому. – echez

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