[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка
Shurick
На локальном сервере скрипт работает корректно а у хостера выдает ошибку! не нравиться ему вот это - &. В чем проблема?!


$tree=array();
foreach($cats as $id => &$user)
{
if ($user['parent'] == 0)
$tree[$id] =& $user;
else
$cats[$user['parent']]['sub'][$id] =& $user;
}
return $tree;
}




Спустя 10 минут, 22 секунды (11.03.2010 - 16:17) Nikitian написал(а):
Если не ошибаюсь, то так будет правильно:

$tree=array();
foreach($cats as $id => &$user)
{
if ($user['parent'] == 0)
$tree[$id] = $user;
else
$cats[$user['parent']]['sub'][$id] = $user;
}
return $tree;
}

Спустя 4 минуты (11.03.2010 - 16:21) Shurick написал(а):
Цитата (Nikitian @ 11.03.2010 - 13:17)
Если не ошибаюсь, то так будет правильно:
<pre class="sh_sourceCode" rel="php">
    <span class="sh_variable">$tree</span><span class="sh_symbol">=</span><span class="sh_function">array</span><span class="sh_symbol">();</span>
    <span class="sh_control">foreach</span><span class="sh_symbol">(</span><span class="sh_variable">$cats</span> <span class="sh_control">as</span> <span class="sh_variable">$id</span> <span class="sh_symbol">=> &</span><span class="sh_variable">$user</span><span class="sh_symbol">)</span>
    <span class="sh_cbracket">{</span>
        <span class="sh_control">if</span> <span class="sh_symbol">(</span><span class="sh_variable">$user</span><span class="sh_symbol">[</span><span class="sh_string">'parent'</span><span class="sh_symbol">] ==</span> <span class="sh_number">0</span><span class="sh_symbol">)</span>
            <span class="sh_variable">$tree</span><span class="sh_symbol">[</span><span class="sh_variable">$id</span><span class="sh_symbol">] =</span> <span class="sh_variable">$user</span><span class="sh_symbol">;</span>
        <span class="sh_control">else</span>
            <span class="sh_variable">$cats</span><span class="sh_symbol">[</span><span class="sh_variable">$user</span><span class="sh_symbol">[</span><span class="sh_string">'parent'</span><span class="sh_symbol">]][</span><span class="sh_string">'sub'</span><span class="sh_symbol">][</span><span class="sh_variable">$id</span><span class="sh_symbol">] =</span> <span class="sh_variable">$user</span><span class="sh_symbol">;</span>
    <span class="sh_cbracket">}</span>
    <span class="sh_control">return</span> <span class="sh_variable">$tree</span><span class="sh_symbol">;</span>
   <span class="sh_cbracket">}</span></pre>

Но на сервере хостера не работает.

И что вообще означает &$user

Спустя 2 часа, 41 минута, 5 секунд (11.03.2010 - 19:02) DedMorozzz написал(а):
(: Более 2х лет на пхп-форуме... Это жёсткое присвоение. Иль тя на гугле забанили, что такие вопросы задаёшь?

Спустя 30 минут, 24 секунды (11.03.2010 - 19:32) Nikitian написал(а):
С амперсантом - это ссылка. Т.е. проходя по массиву форичем мы записываем ключ-значение в переменные $id, $user, только вот если мы меняем $user, то и в исходном массиве это значение будет меняться. Тут для этого используется ссылка.
Только вот тут в третьем случае какая-то жёсткая рекурсия: элементу массива сопоставляется весь массив по ссылке. Вечером мой мозг отказывается воспринимать такие конструкции %)

Спустя 1 минута, 6 секунд (11.03.2010 - 19:33) DedMorozzz написал(а):
Цитата
Это жёсткое присвоение.
- чем не ответ?
На гугле информация более полная и сразу. Разве не очевидные преимущества?
$a=10;
$b = &$a; // теперь $b — то же самое, что и $a
$b=0; // на самом деле $a=0
echo "b=$b, a=$a"; // Выводит: "b=0, a=0"

Спустя 36 секунд (11.03.2010 - 19:34) Shurick написал(а):
Сории! СПС! сразу не понял ))))


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.