Шо це такое ??? :D

Тема в разделе "PHP", создана пользователем o_nix, 24 окт 2011.

Модераторы: latteo
  1. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    PHP:
    for($i=0$i<count($ar_what); $i++)
    {
    preg_match_all("/".$ar_what[$i][0]."(.*)".$ar_what[$i][1]."/sU"$ret_val$pr_dan);
    ${
    $ar_what[$i][2]} = $pr_dan[1][0];
    //print_r($pr_dan[1][0]);
    }
    с preg_match_all всё понятно но вот что за строка
    Код:
    ${$ar_what[$i][2]} = $pr_dan[1][0];
    я хз

    конкретно интересует
    Код:
    ${$ar_what[$i][2]}
    первый раз такое вижу - error log уже 250мб и это наиболее частая ошибка
    Код:
    PHP Notice:  Undefined offset:  0 in /var/www/hzhz/data/www/blablabla.ru/wablon.php on line 70
    скрипт чужой, партнёрский ...
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    сделай так
    PHP:
    if(isset($pr_dan[1][0])) ${$ar_what[$i][2]} = $pr_dan[1][0];
    не sotmarket случайно :)
     
    o_nix нравится это.
  3. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Переменные переменные
    Иногда бывает удобно иметь переменными имена переменных. То есть, имя переменной, которое может быть определено и изменено динамически. Обычная переменная определяется примерно таким выражением:
    PHP:
    <?php
    $a 
    "hello";
    ?> 
    Переменная переменная берет значение переменной и рассматривает его как имя переменной. В вышеприведенном примере hello может быть использовано как имя переменной при помощи двух знаков доллара. То есть:
    PHP:
    <?php
    $$a "world";
    ?> 
    Теперь в дереве символов PHP определены и содержатся две переменные: $a, содержащая "hello", и $hello, содержащая "world". Таким образом, выражение
    PHP:
    <?php
    echo "$a ${$a}";
    ?> 
    выведет то же, что и
    PHP:
    <?php
    echo "$a $hello";
    ?> 
    то есть, они оба выведут: hello world.

    Для того чтобы использовать переменные переменные с массивами, вы должны решить проблему двусмысленности. То есть, если вы напишете $$a[1], обработчику необходимо знать, хотите ли вы использовать $a[1] в качестве переменной, либо вам нужна как переменная $$a, а затем ее индекс [1]. Синтаксис для разрешения этой двусмысленности таков: ${$a[1]} для первого случая и ${$a}[1] для второго.
     
    o_nix нравится это.
  4. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    zzallexx
    она самая :)
    недавно перенёс сайт на новый хост, ток щас полез смотреть почему из индекса вылетают страницы пачками
    а там еррор логов 260мб, на другом хосте такой беды небыло

    код запостил исходя из собственного опыта исправления данной баги ???
    если да, дай линк плиз где раскрыто это в подробностях (если есть) тк у мну этих ерроров 260мб, и дебажить чувствую придётся долго :D
     
  5. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    ну как-таковой инфы нет сам тоже переехал на другой сервак и там все повылезало просто получается что preg_match_all не всегда выдает эту $pr_dan[1][0] то есть ее просто нет пустой массив ну и лезет ошибка поэтому и рекомендуется проверять перед тем как присваивать значение переменной значение из массива полученного в результате preg_match или preg_match_all
     
    o_nix нравится это.