PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 18
roadster Отправлено: 09 Июля, 2013 - 12:12:41 • Тема: php акселератор для Windows • Форум: Вопросы новичков

Ответов: 12
Просмотров: 496
Знакомая ситуация, эксперементировать это лучший вариант, т.к. сами знаете что у разных людей на винде одно и тоже может по разному работать.
roadster Отправлено: 09 Июля, 2013 - 11:32:04 • Тема: php акселератор для Windows • Форум: Вопросы новичков

Ответов: 12
Просмотров: 496
Чуть не в тему, но как по мне, то держать сайт на винде это вообще не удачная идея... Думаю что работать должно нормально, видел что люди использовали, нареканий не слышал, но правда и положительных отзывов тоже )) Винда непредсказуемая система.
roadster Отправлено: 08 Июля, 2013 - 16:40:35 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
А не могли бы вы объяснить как работает данное условие из строки 26:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  if(is_array($mValue) && count($rgAncestors = getAncestors($mValue, $sSearchValue)))


Ну первое это понятно, вычисляется есть ли дочерняя ветвь или нет, а второе непойму как оно срабатывает.
roadster Отправлено: 08 Июля, 2013 - 10:47:08 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
Спасибо, у меня 5.3 стоит. Надо читать изменения а то я впервые встречаю данную конструкцию. Всем большое спасибо кто откликнулся, буду тут почаще сидеть, может и я кому помогу )
roadster Отправлено: 08 Июля, 2013 - 10:24:14 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
Ругается на конструкцию [$sKey]. Пробовал и $sKey и $sKey[], все равно ругается или ошибка синтаксиса ну это и так ясно, или что переменная - не массив. Вроде должно работать. Попробую проверить каждую переменную.
roadster Отправлено: 08 Июля, 2013 - 08:50:48 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
Спасибо за помощь, разобрался. Писал ночью, по этому видимо мозг уже не работал, сегодня трезвым взглядом все прояснил. Поставил NetBeans, довольно удобно, особенно если учесть что и бесплатно. А задача такая, нужно что бы функция проходила по деревey до указанного в параметре $ID.
roadster Отправлено: 07 Июля, 2013 - 23:52:28 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
Помогите найти ошибку, вроде бы и функция работает как нужно, но не пойму почему при проверке функция не завершается а цикл проходит до последнего элемента массива. Массив чуть изменен. (в функции первый элемент массива не проверял на соответствие искомому, так как делаю пока для пробы, что бы убедиться что работает).

CODE (htmlphp):
скопировать код в буфер обмена
  1.     $array1 = array(
  2.         '190' => array(
  3.             'loginId' => '190',
  4.             'login' => 'login1',
  5.             'email' => 'mail@mail.mm'
  6.             'childNode' => array(
  7.                 '200' => array (
  8.                     'loginId' => '200',
  9.                     'login' => 'login2',
  10.                     'email' => 'a@a.aa'
  11.                     'childNode' => array(),
  12.                     ),
  13.                 ),
  14.              ),
  15.          '305' => array (
  16.             'loginId' => '305',
  17.             'login' => 'login3',
  18.             'email' => 'mail@a.aa',
  19.             'childNode' => array(),
  20.            ),
  21.     );
  22.  
  23. function goArray($array, $ID)
  24. {
  25. static $result;
  26. static $temp1;
  27.    
  28. foreach ($array as $key => $value)
  29. {
  30.     $result[] = $value['loginId'];
  31.    
  32.     //тут не проходит сравнение
  33.     if ($value['loginId'] == $ID)
  34.     {
  35.         return $result;
  36.     }
  37.    
  38.     unset($temp1);
  39.     $temp1 = $value['childNode'];
  40.    
  41.     echo $value['loginId'] . "\n";
  42.    
  43.     goArray($temp1, $ID);
  44. }  
  45. }
  46.  
  47. goArray($array1, '200');


Не пойму почему не срабатывает сравнение...
roadster Отправлено: 07 Июля, 2013 - 22:36:39 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
Спасибо, разобрался, видимо нужно отдохнуть а то мозги уже не варят. Никак с этим деревом не разберусь...
roadster Отправлено: 07 Июля, 2013 - 22:14:16 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
подскажите, объявляю я массив $a = array(); он по идее пустой, но не могу проверить его на пустоту, пишу например:

$a = array();

if (! empty($a))
{
'Ne pustoi';
}
if (empty($a))
{
echo 'Pustoi';
}

Получается что он не пустой, пробовал считать элементы путем count, не помогает, isset тоже не срабатывает, т.к. массив объявлен, пробовал перебирать через foreach и проверять ключ, но так же безрезультатно. Как правильно проверить массив? В чем ошибка?
roadster Отправлено: 07 Июля, 2013 - 14:06:33 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
[quote=vanicon]roadster
http://www.php.su/learnphp/vars/?statvars [/quote]
Да да, извиняюсь, переписал со статикой, теперь функция просто зациклилась...
(Добавление)
[quote=EuGen][/quote]

Спасибо большое, теперь хоть есть над чем покурить!
(Добавление)
Вот что получилось, собственно теперь вопрос в другом, как мне получить все элементы, которые проходит цикл до указанного ($loginId), если корень не один, а два, три и т.д.
У меня получается так, что элементы считает от первого и пока не найдет нужный, а как сделать что б считало от корня, в котором нужный элемент ($loginId) находится?

CODE (htmlphp):
скопировать код в буфер обмена
  1. function getRoad($src,$loginId)
  2. {
  3.     static $result;
  4.     $recIterator = new RecursiveIteratorIterator( new RecursiveArrayIterator($src));
  5.    
  6.     foreach($recIterator as $key => $value)
  7.     {
  8.         if (!is_array($value))
  9.         {
  10.             if ($recIterator->key() == 'loginId')
  11.             {
  12.                 //$result[] = $value;
  13.                 $result[] = $value;
  14.                 //print_r($result);
  15.                 echo "\n";
  16.                 if ($value == $loginId)
  17.                 {
  18.                     return $result;
  19.                 }
  20.             }
  21.         }
  22.     }
  23.     //print_r($result);
  24. }


$newAr = getRoad($source_array,1234);
print_r($newAr);
roadster Отправлено: 07 Июля, 2013 - 13:54:38 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
Как же тогда быть? Если их объявить в функции то они будут обнуляться посредством $result = array(); $temp = array(); как я уже писал выше. Использовать глобальные переменные?
roadster Отправлено: 07 Июля, 2013 - 13:52:25 • Тема: MD5 и соль • Форум: Вопросы новичков

Ответов: 45
Просмотров: 2846
Почитайте вот тут: http://forum[dot]antichat[dot]ru/showthread.php?p=128979
Вроде бы доступно подробно описано зачем оно нужно и с чем его едят.
roadster Отправлено: 07 Июля, 2013 - 13:46:40 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
Подскажите пожалуйста, где у меня ошибка, вот что получилось:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $result = array();
  2. $temp = array();
  3.  
  4. function rrroad($src)
  5. {    
  6.     foreach ($src as $key => $value)
  7.     {
  8.         while ($value['childNode'] != array())
  9.         {
  10.             $result[] = $value['loginId'];
  11.             unset($temp);
  12.             $temp = $value['childNode'];
  13.             rrroad($temp);
  14.         }
  15.     }
  16. print_r($result);  
  17. }


Почему пишет Undefined variable: result in ..... ???? Не пойму что делаю не так
roadster Отправлено: 07 Июля, 2013 - 13:01:21 • Тема: обход дерева ассоциативных массивов • Форум: Вопросы новичков

Ответов: 31
Просмотров: 2529
MADONZY пишет:
roadster, тот код что ты кинул - абсурд...
1 - не закрыл кавычку:

2 - откуда ты взял $src??
3 - тут только рекурсия тебе поможет... вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. while ( $key['childNode'] != array() )
  3.     {
  4.         ...
  5.         $res[] = $key['loginId];
  6.        gotoLogin($sourceArray, $loginId);
  7.   }
  8.  


Спасибо, за кавычку сорри, это я писал как пример. Буду пробовать.
(Добавление)
Столкнулся с такой проблемой, что бы сохранить результат, мне нужно объявить массив в начале функции $result = array(); и получается при рекурсии, функция снова запускается и переменная не сохраняет предыдущий результат, имхо $result = array(); очищает переменную, как быть?

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB