Sujcnm,
ограничения типа как у яндекса и гугла есть? (на кол-во писем в день или какое либо ограничение по контенту). Подробнее про это где букварь есть?
потому что много приложений крутится на этом серваке помимо php скриптов
ресурсы позволяют кормить винду)
отлаживать рендеринг сайтов
[umka], RAS, а без виртуалок на win 7 пак браузеров можно поставить? или это прям единственный способ?
LEOnidUKG, ваша функция работает, спасибо---------- Добавлено 09.03.2015 в 19:50 ----------LEOnidUKG, я сделал так
private function mapTree($arr, $id_key = 'id', $pid_key = 'p_id') { $structure = array(); while ($elem = array_shift($arr)) { if (isset($structure[$elem[$id_key]])) { $elem['childs'] = $structure[$elem[$id_key]]; unset($structure[$elem[$id_key]]); } else $elem['childs'] = array(); if (isset($references[$elem[$pid_key]])) { $references[$elem[$pid_key]]['childs'][$elem[$id_key]] = $elem; $references[$elem[$id_key]] = & $references[$elem[$pid_key]]['childs'][$elem[$id_key]]; } else { $structure[$elem[$pid_key]][$elem[$id_key]] = $elem; $references[$elem[$id_key]] = & $structure[$elem[$pid_key]][$elem[$id_key]]; } asort($references); } return $structure; }
и получаю такой массив на выходе:
array(1) { [0]=> array(2) { [21]=> array(15) { ["id"]=> string(2) "21" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(1) "0" ["avt_id"]=> string(4) "8189" ["adr_id"]=> string(4) "8189" ["date_create"]=> string(19) "2015-03-09 12:47:50" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(8) "12123123" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> string(4) "sanu" ["adr_ava"]=> string(11) "i6ZCbsol1z4" ["childs"]=> array(0) { } } [19]=> array(15) { ["id"]=> string(2) "19" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(1) "0" ["avt_id"]=> string(4) "8189" ["adr_id"]=> NULL ["date_create"]=> string(19) "2015-03-09 12:47:43" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(16) "ыаывавыа" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> NULL ["adr_ava"]=> NULL ["childs"]=> array(1) { [20]=> array(15) { ["id"]=> string(2) "20" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(2) "19" ["avt_id"]=> string(4) "8189" ["adr_id"]=> string(4) "8189" ["date_create"]=> string(19) "2015-03-09 12:47:48" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(8) "12123123" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> string(4) "sanu" ["adr_ava"]=> string(11) "i6ZCbsol1z4" ["childs"]=> array(0) { } } } } } }
обходить его приходится двойным foreach несчитая childs, как сделать так чтобы на выходе получать примерно такой массив:
array(2) { array(15) { ["id"]=> string(2) "21" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(1) "0" ["avt_id"]=> string(4) "8189" ["adr_id"]=> string(4) "8189" ["date_create"]=> string(19) "2015-03-09 12:47:50" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(8) "12123123" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> string(4) "sanu" ["adr_ava"]=> string(11) "i6ZCbsol1z4" ["childs"]=> array(0) { } } array(15) { ["id"]=> string(2) "19" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(1) "0" ["avt_id"]=> string(4) "8189" ["adr_id"]=> NULL ["date_create"]=> string(19) "2015-03-09 12:47:43" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(16) "ыаывавыа" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> NULL ["adr_ava"]=> NULL ["childs"]=> array(1) { array(15) { ["id"]=> string(2) "20" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(2) "19" ["avt_id"]=> string(4) "8189" ["adr_id"]=> string(4) "8189" ["date_create"]=> string(19) "2015-03-09 12:47:48" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(8) "12123123" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> string(4) "sanu" ["adr_ava"]=> string(11) "i6ZCbsol1z4" ["childs"]=> array(0) { } } } } }
ну т.е. убрать лишние индексы сразу чтоб потом не обходить их циклом...
edogs, ошибку нашел, она заключается в том что комментов то 3, а цикл почемуто 4 раза выполняется... почему такое может быть?
может посоветуете, вообще как-то иначе переписать функцию?
сделал так:
private function mapTree($dataset) { $tree = array(); foreach ($dataset as $id=>&$node) { if(!isset($node['p_id'])){ $node['p_id']=0; } if (!$node['p_id']) { $tree[$id] = &$node; } else { $dataset[$node['p_id']]['childs'][$id] = &$node; } } return $tree; }
теперь в конец массива добавляет лишний ["p_id"]=>0
array(2) { [2]=> array(14) { ["id"]=> string(2) "19" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(1) "0" ["avt_id"]=> string(4) "8189" ["adr_id"]=> NULL ["date_create"]=> string(19) "2015-03-09 12:47:43" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(16) "ыаывавыа" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> NULL ["adr_ava"]=> NULL } [19]=> array(2) { ["childs"]=> array(2) { [0]=> array(14) { ["id"]=> string(2) "21" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(2) "19" ["avt_id"]=> string(4) "8189" ["adr_id"]=> string(4) "8189" ["date_create"]=> string(19) "2015-03-09 12:47:50" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(8) "12123123" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> string(4) "sanu" ["adr_ava"]=> string(11) "i6ZCbsol1z4" } [1]=> array(14) { ["id"]=> string(2) "20" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(2) "19" ["avt_id"]=> string(4) "8189" ["adr_id"]=> string(4) "8189" ["date_create"]=> string(19) "2015-03-09 12:47:48" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(8) "12123123" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> string(4) "sanu" ["adr_ava"]=> string(11) "i6ZCbsol1z4" } } ["p_id"]=> int(0) } }
edogs, p_id - везде нули, NULL не может там быть это 100%
Почему &$node - не к делу?
И вот допустим три коммента, два дочерних
array(2) { [2]=> array(14) { ["id"]=> string(2) "19" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(1) "0" ["avt_id"]=> string(4) "8189" ["adr_id"]=> NULL ["date_create"]=> string(19) "2015-03-09 12:47:43" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(16) "ыаывавыа" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> NULL ["adr_ava"]=> NULL } [19]=> array(1) { ["childs"]=> array(2) { [0]=> array(14) { ["id"]=> string(2) "21" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(2) "19" ["avt_id"]=> string(4) "8189" ["adr_id"]=> string(4) "8189" ["date_create"]=> string(19) "2015-03-09 12:47:50" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(8) "12123123" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> string(4) "sanu" ["adr_ava"]=> string(11) "i6ZCbsol1z4" } [1]=> array(14) { ["id"]=> string(2) "20" ["section"]=> string(5) "match" ["el_id"]=> string(3) "773" ["p_id"]=> string(2) "19" ["avt_id"]=> string(4) "8189" ["adr_id"]=> string(4) "8189" ["date_create"]=> string(19) "2015-03-09 12:47:48" ["like_p"]=> string(1) "0" ["like_m"]=> string(1) "0" ["text"]=> string(8) "12123123" ["avt_login"]=> string(4) "sanu" ["avt_ava"]=> string(11) "i6ZCbsol1z4" ["adr_login"]=> string(4) "sanu" ["adr_ava"]=> string(11) "i6ZCbsol1z4" } } } }
Почему вылетает Undefined index: p_id к этой строке: if (!$node['p_id']) {
[umka], суть в том чтобы полученный массив в цикле перебрать, mapTree() и делает то самое дерево.
не могу понять причом выборка к дереву
LawbreaK, да, спасибо, поставил запись из браузера
LawbreaK, я не работаю, я учусь еще в школе)
Вот скрины настроек
1
2
Что нужно сделать?