[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отрицательное значение в массиве
z-o-m-b-i-e
Есть массив, в массиве диагональ заполняется значение -1.
Диагональ заполняется значением не "-1" а просто "-"
Дальше идет поиск минимального значения в строке и вывод его на экран.
И минимум почему то опять "-" Хотя условие на -1.
Заранее благодарен за ответ.
<?php
$n=4;//Количество городов
$i=0;
$j=0;
$mo=-1;
//Создае массив 4*4 и запоняем его рандомно
for($i=0;$i<$n;$i++)
{
for ($j=0;$j<$n;$j++)
$A[$i][$j]=rand(1,9);
}
$A = array_map(create_function('$item', 'return implode($item);'), $A);
echo '<pre>'.print_r($A, 1).'</pre>';
//Заполняем диагональ нулями
for($i=0;$i<$n;$i++){$A[$i][$i]=$mo;};
echo '<pre>'.print_r($A, 1).'</pre>';
//Находим минимальный элемент в строке
for ($i=0;$i<$n;$i++){
for ($j=0,$min=99;$j<$n;$j++) {
if ($A[$i][$j]<>-1 && $A[$i][$j]<$min ) {
($min=$A[$i][$j]) ;
}
{
}
}

echo $min;}
?>




Спустя 10 минут (29.11.2011 - 01:24) Winston написал(а):
Цитата (z-o-m-b-i-e @ 29.11.2011 - 00:14)
$A[$i][$j]<>-1

Это вообще то, perl запись...
Так не пробовал писать ?
$A[$i][$j] != -1




Спустя 2 минуты, 57 секунд Winston написал(а):
Цитата (z-o-m-b-i-e @ 29.11.2011 - 00:14)
for($i=0;$i<$n;$i++){$A[$i][$i]=$mo;};

Зачем ; после закрывающей фигурной скобки ?
Цитата (z-o-m-b-i-e @ 29.11.2011 - 00:14)
($min=$A[$i][$j])

Так же зачем выражение взято в () ?
Цитата (z-o-m-b-i-e @ 29.11.2011 - 00:14)
  }
            {
                }
      }

Присмотрись внимательней на скобки



Спустя 7 минут, 6 секунд Winston написал(а):
И еще, если у тебя стоит не -1, а просто -, то его и надо в условие подставлять.
Вместо
Цитата (z-o-m-b-i-e @ 29.11.2011 - 00:14)
$A[$i][$j]<>-1

Напиши
$A[$i][$j]!= '-'




Спустя 10 минут, 44 секунды Winston написал(а):
<?php
$n = 4;//Количество городов
$i = 0;
$j = 0;
$mo = -1;
//Создае массив 4*4 и запоняем его рандомно
for($i = 0; $i < $n; $i++)
for ($j = 0; $j < $n; $j++)
$A[$i][$j] = rand(1,9);

$A = array_map(create_function('$item', 'return implode($item);'), $A);
echo '<pre>'.print_r($A, 1).'</pre>';
//Заполняем диагональ нулями
for($i = 0; $i < $n; $i++)
$A[$i][$i] = $mo;
echo '<pre>'.print_r($A, 1).'</pre>';
//Находим минимальный элемент в строке
for ($i = 0; $i < $n; $i++){
for ($j = 0, $min = 99; $j < $n; $j++)
if ($A[$i][$j] != '-' && $A[$i][$j] < $min )
$min = $A[$i][$j];

echo $min . ' ';
}
?>

Спустя 10 часов, 1 минута, 9 секунд (29.11.2011 - 11:25) z-o-m-b-i-e написал(а):
Winston насчет Perl Записи, Я в интернете операторы сравнения смотрел
там показываеться <>,!=,!== ...
!= так пробовал равносильно <>
Зачем ; после закрывающей фигурной скобки ? phpDesigner 7 Просит......
Так же зачем выражение взято в () ?phpDesigner 7 Просит а то ошибки получаются..
Большое спасибо Winston..
Подскажите почему все таки -1 не выводиться а только -..
Это индивидуальность Языка..или что?


Спустя 16 минут, 46 секунд (29.11.2011 - 11:42) inpost написал(а):

Спустя 6 часов, 35 минут, 50 секунд (29.11.2011 - 18:18) z-o-m-b-i-e написал(а):
inpost Да, Да именно там Я и смотрел

Спустя 1 день, 2 часа, 38 минут, 53 секунды (30.11.2011 - 20:57) sergeiss написал(а):
Цитата (z-o-m-b-i-e @ 29.11.2011 - 02:14)
$A = array_map(create_function('$item', 'return implode($item);'), $A);

А ты можешь объяснить всю "глубину" этой функции? Ты запускаешь implode с целым параметром, хотя можно или ( string $glue , array $pieces) или просто (array $pieces). При этом print_r показывает вообще одномерный массив!!!!!!!!!!! Ты это заметил или нет? Причина в том, что твоя call_back функция просто портит весь твой двумерный массив, делает его одномерным.

Замени 'return implode($item)' на просто 'return $item', всё заработает. И все-таки объясни, что ты хотел сделать с помощью implode? И тогда ты поймешь (или мы объясним), как НАДО БЫЛО сделать.

Но все-таки сначала перед применением call_back функции напиши echo '<pre>'.print_r($A, 1).'</pre>'; чтобы посмотреть, что у тебя в массиве smile.gif

Спустя 2 минуты, 39 секунд (30.11.2011 - 20:59) Winston написал(а):
Цитата (sergeiss @ 30.11.2011 - 19:57)
Замени 'return implode($item)' на просто 'return $item'

Дык тогда же array_map будет бессмыслен.

Спустя 5 минут, 42 секунды (30.11.2011 - 21:05) sergeiss написал(а):
Цитата (Winston @ 30.11.2011 - 21:59)
Дык тогда же array_map будет бессмыслен.

Да, именно так!!!! smile.gif Но тогда хотя бы сохранится начальный двумерный массив. Чтобы автор темы понять, что именно такой call_back портит ему всё!

Иначе тут получается так, что создается двумерный массив, затем в call_back из каждой строки делается один элемент, получаем одномерный массив, затем добавляем по одному элементу, опять создаем двумерный массив, но уже кривой.... В итоге получаем полную ересь.

Спустя 3 минуты, 54 секунды (30.11.2011 - 21:09) Winston написал(а):
Ну в прошлой теме он хотел объединить вложенный массив в строку
ТЫЦ

Спустя 3 минуты, 31 секунда (30.11.2011 - 21:12) sergeiss написал(а):
Цитата (Winston @ 30.11.2011 - 22:09)
Ну в прошлой теме он хотел объединить вложенный массив в строку

В таком случае, у него логика не просто "хромает на обе ноги", а напрочь отсутствует. Потому что он сначала делает одномерный массив из двумерного, а потом "заполняет диагональ нулями", которой уже просто нету к тому моменту!!!!!
Быстрый ответ:

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