Разработчику. Сборник рецептов PHP
Задавайте вопросы

Хранение множества элементов массива с одним ключом

Вернуться назад

Задача

Необходимо связать различные элементы с одним ключом.

Решение

Занесение нескольких элементов в массив:

$fruits = array('red' => array('strawberry','apple'),
                              'yellow' => array('banana'));

Или используйте объект:

while ($obj = mysql_fetch_object($r)) {
          $fruits[] = $obj;
}

Обсуждение

В PHP в пределах одного массива ключи уникальны, поэтому нельзя связать с ключом более одного значения без перезаписи старого значения. Вместо этого запоминают значения в безымянном массиве:

$fruits['red'][ ] = 'strawberry';
$fruits['red'][ ] = 'apple';
$fruits['yellow'][ ] = 'banana';

Или оперируют с элементами в цикле:

while (list($color,$fruit) = mysql_fetch_array($r)) {
        $fruits[$color][ ] = $fruit;
}

Для вывода элементов выполните цикл по всему массиву:

foreach ($fruits as $color=>$color_fruit) {
        // $color_fruit – это массив
        foreach ($color_fruit as $fruit) {
                print "$fruit is colored $color.<"br>";
        }
}

Или используйте функцию pc_array_to_comma_string() из рецепта описанного в файле (Печать массивов с запятыми)

foreach ($fruits as $color=>$color_fruit) {
         print "$color colored fruits include " .
                pc_array_to_comma_string($color_fruit) . "<br>";
}

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ