[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    array_unique ошибки выдает
     
  2. Failure

    Failure Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    PHP:
    <?php
    $x 
    = Array('127.0.0.1''127.0.0.2''127.0.0.2''111.111.111.0''127.0.0.1');
    print_r(array_unique($x));
    ?>
    результат:
    Code:
    Array
    (
        [0] => 127.0.0.1
        [1] => 127.0.0.2
        [3] => 111.111.111.0
    )
    
    
    главной строку с ип-адрессами правильно на массив разбить

    UPD:
    тебе надо что бы выводились уникальные ипы, или уникальные диапазоны ипов?
     
    #15202 Failure, 24 May 2010
    Last edited: 24 May 2010
  3. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    в этом и смысл
    а ипы идут так:
    PHP:
    Array ( [0] => 72.73.128.0 72.87.47.255 ) Array ( [0] => 71.96.0.0 71.127.255.255 )
     
  4. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    я правильно понимаю:
    PHP:
    Array
    (
    [
    0] => Array ( [0] => 72.73.128.0 72.87.47.255 )
    [
    1] => Array ( [0] => 71.96.0.0 71.127.255.255 )
    )
    ?
     
  5. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    тоже не то
     
  6. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Составь конкретную задачу, не гадать же что ты хочешь
    Мне например совершенно непонятно с каким массивом нужно иметь дело. И что требуется отсеять ? Уникальные записи или диапазоны ip? Что?
     
    1 person likes this.
  7. Vlad&slav

    Vlad&slav Member

    Joined:
    1 Jan 2009
    Messages:
    207
    Likes Received:
    41
    Reputations:
    9
    А ты регулярку в прегматче напиши ровно!

    Как извращённый вариант записать все возможные адреса из диапазона, удалить дубли, разбить на диапазоны :D
     
  8. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    как заполнить массив таким образом?


    0 0 0 0 0
    0 1 1 1 0
    0 1 2 1 0
    0 1 1 1 0
    0 0 0 0 0
     
    #15208 #Wolf#, 26 May 2010
    Last edited: 26 May 2010
  9. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    $a[] = array(0,0,0,0,0);
    $a[] = array(0,1,1,1,0);
    $a[] = array(0,1,2,1,0);
    $a[] = array(0,1,1,1,0);
    $a[] = array(0,0,0,0,0);
     
  10. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    спасибо, капитан.
    теперь пожалуйста 100*100. (*sarcasm*)
     
  11. Byte_

    Byte_ Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    143
    Likes Received:
    34
    Reputations:
    2
    Code:
    $x = 100;
    $y = 100;
    $res = Array();
    for($m = 0;$m<$x;$m++)
    for($n = 0;$n<$y;$n++)
    {
    if($m == 0 || $n == 0 || $m == ($x-1) || $n == ($y-1))
    {
    $res[$m][$n] = 0;
    }else if($m == round($x/2) && $n == round($y/2))
    {
    $res[$m][$n] = 2;
    }else $res[$m][$n] = 1;
    }
    
    приблизительно так, не проверял правда...
    должно всё по краям заполниться нулями, остальное единичками, в центре 2.
     
  12. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    не вы не поняли. должно по кругу увеличиваться - т.е 0 1 2 3 4 ...
    я решил, но хотелось бы увидеть более рациональные решения.
    ---------------------------------------------------------------
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
    0 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 0
    0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 0
    0 1 2 3 4 4 4 4 4 4 4 4 4 4 4 3 2 1 0
    0 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 0
    0 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 0
    0 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 0
    0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0
    0 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 0
    0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0
    0 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 0
    0 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 0
    0 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 0
    0 1 2 3 4 4 4 4 4 4 4 4 4 4 4 3 2 1 0
    0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 0
    0 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 0
    0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
     
    #15212 #Wolf#, 26 May 2010
    Last edited: 26 May 2010
  13. Byte_

    Byte_ Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    143
    Likes Received:
    34
    Reputations:
    2
    вот это я подзапарился))) с тебя пиво! =)
    PHP:
    $x 7;
    $y 7;
    $counter 0;
    $res = Array();
    for(
    $m 0;$m<$x;$m++)
        for(
    $n 0;$n<$y;$n++)
        {
            
    $counter $m<$n?$m:$n;
            
    $res[$m][$n] = $counter;
        }
    for(
    $m 0,$j round($x/2);$m<$j;$m++)
        for(
    $n 0,$i round($y/2);$n<$i;$n++)
        {
            
    $res[$x-$m-1][$y-$n-1] = $res[$m][$n];
            
    $res[$x-$m-1][$n] = $res[$m][$n];
            
    $res[$m][$y-$n-1] = $res[$m][$n];
        }
    for(
    $m 0;$m<$x;$m++)
    {
        for(
    $n 0;$n<$y;$n++)
        {
            echo 
    $res[$m][$n].'&nbsp;';
        }
        echo 
    '<br />';
    }
    кстати пару коментов - первый цикл делает матрицу вида
    0000
    0111
    0122
    0123
    а второй инверсирует левый верхний край.
     
    #15213 Byte_, 26 May 2010
    Last edited: 26 May 2010
  14. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    хм, забавно.
    вот еще такой вариант
    PHP:
    function make_square($x){ //не рекомендуется больше 19
    for($k=0;$k<=floor($x/2);$k++)
    for(
    $i=$k;$i<=$x-$k;$i++)
    for(
    $j=$k;$j<=$x-$k;$j++)
    if (
    $i==$k || $j==$k || $j==$x-$k || $i==$x-$k$a[$i][$j]=$k;
    return 
    $a;}
     
    #15214 #Wolf#, 26 May 2010
    Last edited: 26 May 2010
  15. Byte_

    Byte_ Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    143
    Likes Received:
    34
    Reputations:
    2
    ну вот( а я запаривался... хотя у меня меньше сравнения и итераций =)

    -----------------------------------
    мой скрипт от 1000 - 0.661491155624 сек
    этот более 30 =)
     
    #15215 Byte_, 26 May 2010
    Last edited: 26 May 2010
    1 person likes this.
  16. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    вот мой код (сделал от 0 до 100, тормозил только браузер, скрипт работал не больше секунды.. хреновы таблицы :) )
    PHP:
    function olol0square($i){
        if(
    $i>0){
            
    $j=2*$i-1;
            
    $B=array_merge(range(0,$i-1),range($i,0));
            
    $A=array_fill(0,$i,$B);
            for(
    $k=0;$k<$i;$k++)
                for(
    $l=$k+1,$m=$j-$k;$l<=$m;$l++)
                    
    $A[$k][$l]=$k;
            
    $A=array_merge($A,array($B),array_reverse($A));
            return 
    $A;
        }else return array(array(
    0));
    }
    function 
    print_square($arr){
        echo 
    "<table>";
        foreach(
    $arr as $V){
            echo 
    "<tr>";
            foreach(
    $V as $v){
                echo 
    "<td>$v</td>";
            }
            echo 
    "</tr>";
        }
        echo 
    "</table>";
    }
    print_square(olol0square(5));
    upd: без таблиц и ибраузер и скрипт меньше секунды работают, даже если выставить на 500
     
    #15216 roxblnfk, 26 May 2010
    Last edited: 26 May 2010
    1 person likes this.
  17. Terranova

    Terranova Member

    Joined:
    18 May 2010
    Messages:
    3
    Likes Received:
    6
    Reputations:
    0
    Вопрос нуба. Есть инет-магазин. Цены берутся из прайса, что загружается. Но есть позиции на которые цены ставить не нужно, а нужно что то типа "звоните уточняйте".
    Как лучше такое организовать?
     
  18. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    нужно смотреть в БД какого типа поле с ценой
    Скорее всего оно числовое, я вижу такие варианты решения:
    1)Поменять тип поля на символьное и установить значения "?" для товаров с неизвесной ценой (это плохой вариант - БД станет занимать больше места, минус в скорости и могут возникнуть конфликты)
    2) поставить для таких товаров цену 0 или -1
    3) поставить для таких товаров цену 0 или -1, но на выводе из БД сделать проверку (если цена 0, то выводим "уточните у менеджера")
     
  19. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    На одном из сайтов много картинок с русскими буквами в именах.
    На домашнем серваке замечательно всё работает
    Картинки вида site.ru/картинка.jpg нормально открываются и отображаются.
    Залил на хост - там косяк. На картинка.jpg ругается 404-й. На urlencode('картинка.jpg') тоже 404 (и на rawurlencode('картинка.jpg').

    Нормально отображается только в виде - %d0%e5%ec%e5%ed%fc%20.jpg

    Как привести все названия к такому виду?
    Или как заставить сервак нормально отображать их в первозданном виде?
    Либы, вроде, одинаковые везде включены. Версии iconv различаются, но хз, может быть из-за этого или нет...
     
  20. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    m0Hze, не как переименовать все, а как привести строку, например, "ремень.jpg" к виду "%d0%e5%ec%e5%ed%fc.jpg". Может, есть функция подобная urlencode...

    Да и толку переименовывать, если файлы ещё добавляться будут.
     
Thread Status:
Not open for further replies.