Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Пропуск несуществующего элемента массива

 PHP.SU

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


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

> Без описания
myselfdsk
Отправлено: 21 Ноября, 2012 - 09:22:57
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




добра всем.

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

Есть входной 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) и повторять снова, пока не останется лишь один элемент.
Но при этом ключи должны оставаться неизменными (с ними тоже после будут манипуляции)
Так вот, мне нужно чтобы последующие шаги не обрабатывали элементы (ключи), которых нет в массиве.
Может есть какое-то условие , чтобы это обойти.
Код могу предоставить по требованию.
 
 Top
KingStar
Отправлено: 21 Ноября, 2012 - 09:42:03
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)






-----
То что программа работает, не означает что она написана правильно!
 
 Top
myselfdsk
Отправлено: 21 Ноября, 2012 - 11:10:59
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




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
 
 Top
KingStar
Отправлено: 21 Ноября, 2012 - 11:28:37
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




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

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


array_key_exists либо in_array



как-то так


-----
То что программа работает, не означает что она написана правильно!
 
 Top
myselfdsk
Отправлено: 21 Ноября, 2012 - 13:31:21
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




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

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


array_key_exists либо in_array



как-то так

Вот за foreach спасибо, что-то он из головы вылетел, реально удобней получится Улыбка
Попробую array_key_exists, может что и получится, надо проверить
 
 Top
myselfdsk
Отправлено: 23 Ноября, 2012 - 09:48:52
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




KingStar пишет:

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



Помогло ! Спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB