PHP.SU

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

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

> Найдено сообщений: 12
myselfdsk Отправлено: 23 Ноября, 2012 - 09:48:52 • Тема: Пропуск несуществующего элемента массива • Форум: Вопросы новичков

Ответов: 5
Просмотров: 356
KingStar пишет:

if(!array_key_exists('search', $search_array)) continue;



Помогло ! Спасибо
myselfdsk Отправлено: 21 Ноября, 2012 - 13:31:21 • Тема: Пропуск несуществующего элемента массива • Форум: Вопросы новичков

Ответов: 5
Просмотров: 356
KingStar пишет:
Немного не понятно что ты делаешь, столько циклов - черт ногу сломит. Я бы первым делом пеершел с for на foreach, дальше по заданию

Цитата:
последующие шаги не обрабатывали элементы (ключи), которых нет в массиве


array_key_exists либо in_array



как-то так

Вот за foreach спасибо, что-то он из головы вылетел, реально удобней получится Улыбка
Попробую array_key_exists, может что и получится, надо проверить
myselfdsk Отправлено: 21 Ноября, 2012 - 11:10:59 • Тема: Пропуск несуществующего элемента массива • Форум: Вопросы новичков

Ответов: 5
Просмотров: 356
KingStar пишет:

CODE (htmlphp):
скопировать код в буфер обмена
  1. for($c=0;$c<count($file_start);$c++){
  2.    for($j=0;$j<count($sost);$j++){
  3.        if ($j!==0){
  4.        $minimum[$j] = min($sost[$j]);
  5.        $minimal =  min($minimum);
  6.    $key = array_search($minimal,$sost[$j]);
  7.        if ($key !== false ){
  8.    $keys[$j]= $key;
  9.    $keys=array_unique($keys);
  10.                }
  11.            }
  12.        }
  13.  
  14.    unset ($sost);
  15.    print_r($keys);
  16.    $keys = array_values($keys);
  17.    $first=$keys[0];
  18.    $second=$keys[1];
  19.    for ($w=0;$w<count($stack2[$first]);$w++){
  20.        $stack2[$first][$w] = $stack2[$first][$w]+$stack2[$second][$w];
  21.  
  22.    }
  23.    unset ($stack2[$second]);
  24.    echo '<br>';
  25.     echo count($stack2);
  26.     echo '<br>';
  27.     $stack2 = array_values($stack2);
  28.     print_r($stack2);
  29.     $maxx= max(array_flip((array_keys($stack2))));
  30.     for ($i=0;$i<count($stack2);$i++){
  31.        if($i !== $second){
  32.        for ($k=0;$k<count($stack2);$k++){
  33.            if ($k!==$second){
  34.            $proizv = 0;
  35.            for ($a=0;$a<$elements;$a++){
  36.                $minus = $stack2[$i][$a]-$stack2[$k][$a];
  37.                $minus = pow($minus,2);
  38.                $proizv = $proizv + $minus;
  39.  
  40.            }
  41.            $proizv = sqrt($proizv);
  42.  
  43.            if ($proizv ==0)
  44.                $proizv = '99999999999999999999999';
  45.            $sost[$i][$k] = $proizv;
  46.            echo $sost[$i][$k];
  47.            echo '<br>';
  48.         }
  49.         }
  50.     }
  51.     }
  52.  
  53. }

быдло-код пока в режиме начального написания.
$sost - матрица, указанная в примере
составляется мутем математич манипуляций с переменной $stack2
На каждом шаге я нахожу в массиве sost (например, матрица 4х4) минимальный элемент, беру его координаты, объединяю их в массиве staсk2 и удаляю строку и столбец с одним из номеров, и получаю в sost матрицу уже 3х3, и так же использую её.

Вообще это кластеризация методом ближайшего соседа, и я пытаюсь сделать его реализацию на php
myselfdsk Отправлено: 21 Ноября, 2012 - 09:22:57 • Тема: Пропуск несуществующего элемента массива • Форум: Вопросы новичков

Ответов: 5
Просмотров: 356
добра всем.

У меня такая проблема:

Есть входной 2мерный массив(квадратная матрица):
CODE (htmlphp):
скопировать код в буфер обмена
  1. пример:
  2. [0] => Array ( [0] => 99999999999999999999999 [1] => 10 [2] => 4.4721359549996 [3] => 11.313708498985 )
  3. [1] => Array ( [0] => 10 [1] => 99999999999999999999999 [2] => 9.6953597148327 [3] => 13.266499161422 )
  4. [2] => Array ( [0] => 4.4721359549996 [1] => 9.6953597148327 [2] => 99999999999999999999999 [3] => 11.045361017187 )
  5. [3] => Array ( [0] => 11.313708498985 [1] => 13.266499161422 [2] => 11.045361017187 [3] => 99999999999999999999999 ) )

На каждом шаге мне нужно удалять , например, вторую строку, второй столбец, сохранять её номер (цифру 2) и повторять снова, пока не останется лишь один элемент.
Но при этом ключи должны оставаться неизменными (с ними тоже после будут манипуляции)
Так вот, мне нужно чтобы последующие шаги не обрабатывали элементы (ключи), которых нет в массиве.
Может есть какое-то условие , чтобы это обойти.
Код могу предоставить по требованию.
myselfdsk Отправлено: 12 Ноября, 2012 - 13:51:07 • Тема: Перевод строки в верхний регистр • Форум: Вопросы новичков

Ответов: 5
Просмотров: 307
eai пишет:
А разве mb_strtoupper не есть та самая мультибайтовая фикция, ой нет, факция, опять не то, ну как то так Подмигивание ?


Так то да, но для UTF-8 её следует использовать так :
myselfdsk Отправлено: 12 Ноября, 2012 - 10:24:37 • Тема: Перевод строки в верхний регистр • Форум: Вопросы новичков

Ответов: 5
Просмотров: 307
eai пишет:
Странно странно, а файл в какой кодировке ?

UTF-8
Только сейчас увидел, что для файлов в кодировке UTF-8 следует использовать мультибайтовые функции

Проблемку решил другим путем :
CODE (htmlphp):
скопировать код в буфер обмена
  1. function my_strtoupper ($string){
  2. $str=strtolower($string);
  3. if (strtolower ('ц')!='Ц') $string = strtr(
  4. $string,
  5. 'абвгдеёжзийклмнорпстуфхцчшщъьыэюя',
  6. 'АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ');
  7. return $string;
  8. };

Извиняюсь за беспокойство Улыбка
myselfdsk Отправлено: 12 Ноября, 2012 - 10:12:18 • Тема: Перевод строки в верхний регистр • Форум: Вопросы новичков

Ответов: 5
Просмотров: 307
Проблемка такая :
есть строка
CODE (htmlphp):
скопировать код в буфер обмена
  1. $str = 'О дивный чудный мир';

нужно перевести её в верхний регистр , но функции

и

Упорно не хотят ничего делать

Как можно это сделать иначе или заставить работать эти функции ??
myselfdsk Отправлено: 26 Октября, 2012 - 11:29:10 • Тема: Переменная в регулярке • Форум: Программирование на PHP

Ответов: 4
Просмотров: 303
OrmaJever пишет:
конечно, вначале собирается строка, а только затем отдаётся в функцию.

Спасибо за помощь
myselfdsk Отправлено: 26 Октября, 2012 - 11:10:14 • Тема: Переменная в регулярке • Форум: Программирование на PHP

Ответов: 4
Просмотров: 303
OrmaJever пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. '/(^|\s)('.$str.')(\s|[,.-_!?])/iu';

Всё будет работать как надо.

то бишь метасимволы тоже будет считывать корректно?
myselfdsk Отправлено: 26 Октября, 2012 - 11:02:27 • Тема: Переменная в регулярке • Форум: Программирование на PHP

Ответов: 4
Просмотров: 303
привет
есть регулярка, к примеру :
CODE (htmlphp):
скопировать код в буфер обмена
  1. "/(^|\s)(«|»)(\s|[,.-_!?])/iu";

и мне нужно вместо («|») записать данные из переменной (строки)
например:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $str = '«|»|—|“|-|–'

как передать туда переменную и будет ли в таком случае корректно работать метасимвол выбора | , записаный в строке ?
myselfdsk Отправлено: 24 Октября, 2012 - 15:02:04 • Тема: Кодировка и preg_split • Форум: Кодировки и все смежное

Ответов: 2
Просмотров: 1902
Спасибо , уже не нужно.
Поэкспериментировал с регуляркой, все вышло на ура Улыбка
myselfdsk Отправлено: 24 Октября, 2012 - 11:58:59 • Тема: Кодировка и preg_split • Форум: Кодировки и все смежное

Ответов: 2
Просмотров: 1902
вот такая проблема:

Есть кусок кода :
PHP:
скопировать код в буфер обмена
  1. <?
  2. $str = 'О дивный чудный мир';
  3. echo $str;
  4. echo '<br>';
  5. $aw=preg_split('/(^|[^А-Яа-я])([^А-Я])*/', $str, -1, PREG_SPLIT_NO_EMPTY);
  6. print_r ($aw);
  7. ?>

И вот такой результат:
CODE (htmlphp):
скопировать код в буфер обмена
  1. О дивный чудный мир
  2. Array ( [0] => О [1] => дивн&#65533; [2] => й [3] => дн&#65533; [4] => й [5] => ми&#65533; )

Никак не могу разобраться что не так с кодировкой, может кто чего подскажет

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB