Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Помогите с массивом php? Заманался уже...
цитата
12/05/12 в 20:44
 Project
Есть несколько записей в мускле. У каждой записи есть ID который при создании новой строки автоматом назначается по порядку. Все бы хорошо, но некоторые строки были удалены и соответственно ID-шники уже идут не по порядку, а с пропусками.
Все эти записи пишутся в многоуровневый массив.
Задача: вывести из этого массива все данные построчно.
Делал циклом с помощью "for", но из-за пробелов в ID-шниках выходит шняга...
В инете ничего подходящего не нашел... icon_sad.gif
цитата
12/05/12 в 21:04
 pickuper
foreach
цитата
12/05/12 в 21:22
 Ailk
если на пыхе скрипт, то гугли циклы foreach.

примерно это будет выглядеть так (рекурсивный метод вывода многоуровневого массива):

function display_arr($arr, $pid)
{
    $html = '';
    foreach ($arr as $row)
    {
      if ($row['pid'] == $pid)
        {
         $html .= '<li>' . "\n";
            $html .= '    ' . $row['name'] . "\n";
            $html .= '    ' . display_arr($arr, $row['id']);
            $html .= '</li>' . "\n";
        }
    }

    return $html ? '<ul>' . $html . '</ul>' . "<br />\n" : '';
}

$arr = array(
    array('name' => 'Каталог',     'id' => 1,  'pid' => 0),
    array('name' => 'Главная',   'id' => 2,  'pid' => 1),
    array('name' => 'Резерв1',   'id' => 3,  'pid' => 1),
    array('name' => 'Резерв2',   'id' => 4,  'pid' => 1),
    array('name' => 'Товар',     'id' => 5,  'pid' => 0),
    array('name' => 'Резерв1',   'id' => 6,  'pid' => 5),
    array('name' => 'Резерв2',   'id' => 7,  'pid' => 5),
   array('name' => 'Резерв3',   'id' => 8,  'pid' => 5),
    array('name' => 'Уровень 3',     'id' => 9,  'pid' => 0),
    array('name' => 'Уровень 3.1',   'id' => 10,  'pid' => 8),
    array('name' => 'Уровень 3.2',   'id' => 11, 'pid' => 8),
    array('name' => 'Уровень 3.3',   'id' => 12, 'pid' => 8),
);

echo display_arr($arr, 0);
цитата
12/05/12 в 22:48
 Project
Хыхы. Ребят, спасибо, но в этой функции я так и не разобрался, за-то решил вопрос немного по другому.
Все равно, всем спасибо за совет! Оценил. icon_smile.gif
цитата
13/05/12 в 00:01
 Stek
Что то вы через задницу решили решать. Если данные в базе, в чем проблема их оттуда после запроса сразу и выводить ?
цитата
13/05/12 в 00:11
 Project
Stek: Скрипт не мой. icon_smile.gif У меня есть только массив. Лезть лишний раз с запросами в БД не очень хочется. icon_smile.gif
цитата
13/05/12 в 09:20
 AWD
Project писал:
Хыхы. Ребят, спасибо, но в этой функции я так и не разобрался, за-то решил вопрос немного по другому.
Все равно, всем спасибо за совет! Оценил. icon_smile.gif
а что там разбираться?
foreach проходит по всем элементам массива, даже, как ты сказал "многоуровневого" icon_biggrin.gif - многомерного.
$arr = array(1, 'hardcore', 'teen');
$arr = array(3, 'blowjob', 'mature');
foreach($arr as $key=>$val) {
  echo $key; //в 1-ю итерацию выведет 0, во 2-ю 1
  //$key - ключ, если нужен. если не нужен - то просто ($arr as $val)
  echo $val[0]; //в 1-ю итерацию выведет 1, во 2-ю 3
  echo $val[1]; //в 1-ю итерацию выведет 'hardcore', во 2-ю 'blowjob'
  echo $val[2]; //в 1-ю итерацию выведет 'teen', во 2-ю 'mature'
}

for each - для каждого. то есть, функция будет перебирать массив и возвращать каждый его элемент в $val, пока не будет достигнут конец массива. icon_rolleyes.gif


Эта страница в полной версии