Почему не выполняется второй цикл for? PHP: <?php ## Логические переменные $matrix = array( $i => 1); for ($i=0; $i<count($matrix); $i++) { echo 'первый for выполнился'; for ($j=0; $j<count($matrix[$i]); $j++) { echo 'второй for выполнился'; if ($matrix[$i][$j] == 0) break(2); } } if ($i < 10) echo 'Найден нулевой элемент в матрице!'; ?>
потомучто вы задали одномерный массив и второй меры у него нет поэтому count($matrix[$i]) возвращает 0 ибо там ничего нет ремейк PHP: <?php ## Логические переменные for ($i=0; $i<5; $i++) { for ($j=0; $j<5; $j++) { $matrix[$i][$j] = mt_rand(0,4); } } for ($i=0; $i<count($matrix); $i++) { for ($j=0; $j<count($matrix[$i]); $j++) { if ($matrix[$i][$j] == 0) { $i = false; break 2; } } } if (!$i) echo 'Найден нулевой элемент в матрице!'.$j.; print '<pre>'; print_r ($matrix);
Alex_pac, спасибо за пример и ответ. Вам не кажется странным, почему echo не выводит значения массива? Мне кажется . PHP: for ($j=0; $j<5; $j++) { $matrix[$i][$j] = mt_rand(0,4); } echo $matrix[$i][$j]; ?>
ministr, и не должно выводить. ведь вы уже покинули цикл, значение $j будет равно 5. $matrix[$i][5] == NULL, поэтому ничего и не отображается
ministr вам знакомо слово VAR из паскаля? в php оно тоже есть но его не видно. надо сначала обозначить и дать значение переменной в вашем случае это переменная $i у меня складывается впечатление, что вы вообще с программированием мало знакомы. И вам надо занятся изучением самых основ чтобы не задавать таких глупых вопросов.
Ну а вот так выводит PHP: <?php ## Логические переменные for ($j=0; $j<5; $j++) { $matrix[$a][$b] = mt_rand(0,4); } echo $matrix[$a][$b]; ?>
потому что $matrix[$a][$b] эквивалентно $matrix[0][0] в случае, если $a и $b не были инициализированы
titch, я вас не пойму, почему значение переменной $b будет равно 0, когда функцией mt_rand присваевается значение переменной $b с промежутком выбора цифры от 0 до 4.
ну она иницилизирована. Переменная $b приняла значение в рамках от 1 до 4. Где она не иницилизирована? В глобальной видимости? А скакого перепуга она не должна быть видна?
Ну что, мне так и не ответит, почему в первом примере eсho выводит значения пременной массива а во втором нет. PHP: <?php ## Логические переменные for ($j=0; $j<5; $j++) { $matrix = array ( "$a" => array( "$j" => "b" )); } echo $matrix ["$a"]["$j"]; ?> PHP: <?php ## Логические переменные for ($j=0; $j<5; $j++) { $matrix = array ( "a" => array( "j" => "b" )); } echo $matrix ["a"]["j"]; ?>
тк элемента $matrix[NULL][5]; несуществует цикл последним объявляет $matrix[NULL][4] поэтому надо вывести $matrix[$i][$j-1]
получается имя ключа в массиве не стоит указывать через '$' т. к. это ведёт к неявному имени ( псевдониму) ключа.
к какому еще псевдому ключа Ключи абсолютно идентичны, не важно откуда они взялись PHP: <?php $arr1 = array(0=>'a', 1=>'b', 2=>'c'); $arr2 = array(); $let = array('a', 'b', 'c'); for ($i=0; $i<=2; $i++) { $arr2[$i] = $let[$i]; } var_dump($arr1 == $arr2);
Видите, сейчас массив не вызывается. потому-что нет такого ключ больше $a. Поэтому я и говорю, что лучше не ставить первым символ '$' в ключе т.к. впоследствий , кажется простые пременные могут изменит массив. PHP: <?php $arr1 = array($a =>'a', 1=>'b', 2=>'crfht'); $a = 5; print $arr1[$a] ?>
PHP: <?php $a = 5; $arr1 = array($a =>'a', 1=>'b', 2=>'crfht'); print $arr1[$a] ?> ministr вместо того чтобы херней страдать лучше откройте справочник php функций по работе с массивами и то хоть веселей будет вас читать, а то бред ей богу.
А если вот так. Как тогда вызвать значения 'a' ключа $a? Да, читал я про массивы, но я на самом деле не могу разобраться с ключами в виде переменных. PHP: <?php $arr = array($a =>'a', 1=>'b', 2 => array( $b => 'j', 1 => 'e')); $a = 5; ?>
Чувак, у тебя проблемы с левым полушарием мозга? Когда ты объявляешь переменную $arr, переменной $a еще не существует. И $b тоже. Вместо неё - null, поэтому PHP: echo $arr[null];
http://www.php.ru/forum/viewtopic.php?t=32691 http://www.php.ru/forum/viewtopic.php?t=32680 две задроцкие темы, больше там не отвечаю