Выбрать значение массива name зная id

DenVeroid

Новичок
Выбрать значение массива name зная id

Имеется такой массив разделов

PHP:
$tree = array (

  array(
        'id' => 'avto-moto',
        'name' => 'Авто мото',
        'parent' => '0',
        'count' => '0',
      ),  array(
        'id' => 'avtobusy',
        'name' => 'Автобусы',
        'parent' => 'avto-moto',
        'count' => '0',
      ),  array(
        'id' => 'avtoservisy',
        'name' => 'Автосервисы',
        'parent' => 'avto-moto',
        'count' => '0',
      ),  array(
        'id' => 'jevakuacija-avtomobilejj',
        'name' => 'Эвакуация автомобилей',
        'parent' => 'avto-moto',
        'count' => '0',
      ),
      
      .....
);
каким образом зная id вытащить name
тоесть имеется в базе для некой записи значение avto-moto вот по ней нужно выбрать Авто мото


пытался сделать такую функцию

PHP:
function name_normal_array2($array_id,$tree){
$tree = @array_flip($tree);
return  @array_search($array_id, $tree);
}
которой мы переварачиваем значения массива и ищем id, но почемуто ничего не работает
 

DenVeroid

Новичок
вот то что нужно было

PHP:
$newtree = array(); 
foreach($tree as $oldrow) 
{ 
    $newrow = $oldrow; 
    $id =  $newrow['id']; 
    unset($newrow['id']); 
    $newtree[$id] = $newrow; 
} 

echo $newtree['avtoservisy']['name'];
такой вопрос, если массив как у меня будет содержать допустим 3000 элементов то нагрузка на PHP будет большой?
весь массив храню в отдельном файле созданный из базы
 

DenVeroid

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

ведь потом в клиенской части можно этим массивом пользоваться не обращяясь к базе, и запросв нет, и быстрее как я пологаю
 

StUV

Rotaredom
DenVeroid
не бойся БД
она совсем не страшная =)))

серьезно - на каком основании ты "полагаешь", что пхп-скрипт будет быстрее делать выборки из огромного массива чем запрос к базе ?
+ учти операции преобразований массива, сортировки и тп...
 

Gorynych

Посетитель PHP-Клуба
DenVeroid

1.
ведь потом в клиенской части можно этим массивом пользоваться не обращяясь к базе
- в клиентской части это где?

2. не возьмусь отстаивать с пеной у рта, но еще несколько лет назад обработка на PHP циклов порядка тысячи интераций считалось нерациональной (неэффективной).

если даже не брать в рассчет скорость выполнения, то подумайте вот о чем: Вы хотите загрузить довольно большой массив данных, значит ваш скрипт должен разместить его (массив) в памяти. И это будет происходить при каждом обращении к скрипту, логично?
 

DenVeroid

Новичок
я маслость наврал, неподумав, так просто от потолка взял эту цифру, а на самом деле там расчитывается не более 300 это более чем достаточно чтобы создать разделы в месте с подразделами, и их всего будет два уровня это сам раздел и принадлежаший ему подраздел, и базу как я думаю можно не использовать ведь тут по сути в любом случии придётся перегонять из базы в массив типа $row = $db->mysql_assoc($sql_result) чтобы с ним можно было работать

но ведь можно обойтись без базы что уже не нужно времени на создания данного массива, когда можно просто его взять заранее приготовенный в файле.

Или я опять расуждаю не правельно?
 

Stierus

Новичок
"но ведь можно обойтись без базы что уже не нужно времени на создания данного массива, когда можно просто его взять заранее приготовенный в файле.

Или я опять расуждаю не правельно? "

О том и речь, что с базой данных, в твоём случае, работать будет быстрее, чем если ты каждый раз будешь подгружать файл с массивом.
 

HraKK

Мудак
Команда форума
2 DenVeroid
Сделай с базой и без базы.
Проведи тест по времени.
Резултаты можешь выложить сюда, а можешь сам проанализировать.

Заранее скажу различия будут очень незначительны.
 

DenVeroid

Новичок
хорошо, вот засвечу _www.do.stail.ru

експерементировать правдо сейчас нет на это времени , но можно посмотреть в самом низу всех страниц время выплнения скрипта, кстати, движёк использует шаблонотизатор смарти

примерное время выполнения 0,0733

я думаю в принципе на базе не сильно быстрее было бы

да и тут можно заметить разделы вывводятся несколько раз и поразному. Всего разделов 270 штук
 
Сверху