| |
|
|
| |
Массив $ma[$i] может содержать текст и цифры, включая ноль, а некоторые элементы массива могут отсутствовать.
Перебираю весь массив с целью выбора только имеющихся элементов, но при таком условии пропадает и элемент $ma[$i] = 0.
Как отличить нулевое содержимое от отсутствия содержимого? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 14:54)
| | | if( $ma[$i] !== "" ) | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 14:54)
| | | Преобразовать числовой тип в строку
if((string) $ma[$i]!=="")
|
| |
| |
|
|
| |
|
|
| |
для: Faraon
(04.04.2008 в 15:34)
| | | Интересно, а добавив приведение $ma[$i] к типу string, ты расчитываешь, что результат будет отличаться от результата моего кода в лучшую сторону? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 14:54)
| | | Конструкцию
я попробовал в первую очередь. Она не срабатывает.
А вот
if ((string) $ma[$i]!=="")
|
делает то, что надо, спасибо!
Вот только я не понял, что значит (string) ?
В справочнике такого не сыскалось! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 17:03)
| | | приведение к типу string | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 17:03)
| | | > Конструкцию
> if ($ma[$i] !== "")
> я попробовал в первую очередь. Она не срабатывает.
Этого не может быть. | |
| |
|
|
| |
|
|
| |
для: Atheist
(04.04.2008 в 17:06)
| | | "Этого не может быть."
Что же поделать! Проверил еще раз... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 17:08)
| | | > Что же поделать! Проверил еще раз...
Пример кода приведи, пожалуйста. Только минимализм: вот переменная, вот значение, вот условие и не тот результат какой ожидался. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 17:08)
| | | Сорри, не туды написал! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 14:54)
| | | попробуй проверить что это:
is_numeric - число
is_string - строка | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 14:54)
| | | попробуйте если я конечно правильно понял задачу... | |
| |
|
|
| |
|
|
| |
для: KPETuH
(08.04.2008 в 09:07)
| | | боюсь неправильно.. 0 не должен удовлетворять условию, а в случае с empty() - удовлетворит..
в условии задачи - найти только пустые строки
впрочем, товарищ уже нашел что искал - (string) ... | |
| |
|
|
| |
|
|
| |
для: mechanic
(08.04.2008 в 09:42)
| | | задача как раз найти не пустые + не содержащие 0 | |
| |
|
|
| |
|
|
| |
для: KPETuH
(08.04.2008 в 09:48)
| | | Кретин, empty считает за пустое значение и ноль и даже, если не ошибаюсь, пробельные символы. | |
| |
|
|
| |
|
|
| |
для: Atheist
(08.04.2008 в 09:51)
| | | как раз это нам и надо я так понимаю... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 14:54)
| | | так же можно использовать перебор элементов с помощью foreach и проверять на наличие 0
з.ы. вы я так понял перебираете с помощью for... | |
| |
|
|
| |
|
|
| |
для: KPETuH
(08.04.2008 в 09:55)
| | | Цикл тут не при чем. | |
| |
|
|
| |
|
|
| |
для: Atheist
(08.04.2008 в 10:00)
| | | ну ну | |
| |
|
|
| |
|
|
| |
для: KPETuH
(08.04.2008 в 10:03)
| | | То есть ты обосновать свою позицию можешь? | |
| |
|
|
| |
|
|
| |
для: Atheist
(08.04.2008 в 10:07)
| | | что тут обосновывать? человек делает выборку из масиива перебирая все значения циклом for, ему требуется отсечь несуществущие элементы массива + содержащие 0, если он будет использовать foreach то несуществующие элементы массива будут отсекаться автоматом, а если он сделает еще и проверку на 0 то и они будут отсекаться... что тут непонятного? | |
| |
|
|
| |
|
|
| |
для: KPETuH
(08.04.2008 в 10:54)
| | | о, весьма интересно!
т.е. код for($i =0, $n = count($arr); $i < $n; $i++) {} и код foreach($arr as $k => $v) {} делают разное кол-во циклов??
пацталом.. | |
| |
|
|
| |
|
|
| |
для: mechanic
(08.04.2008 в 11:06)
| | | переберите вот такой массив
$n=array(1=>1,2=>2,4=>"",5=>4,6=>0,7=>'rt');
| замерьте количество итераций... | |
| |
|
|
| |
|
|
| |
для: KPETuH
(08.04.2008 в 11:13)
| | | хм..
<?php
$n=array(1=>1,2=>2,4=>"",5=>4,6=>0,7=>'rt');
$i=0;
foreach($n as $k=>$v) {
$i++;
}
echo $i . '<br>';
$i=0;
for($j=0, $m=count($n); $j<$m; $j++) {
$i++;
}
echo $i . '<br>';
?>
РЕЗУЛЬТАТ:
6
6
что я делаю не так? | |
| |
|
|
| |
|
|
| |
для: mechanic
(08.04.2008 в 11:23)
| | | не забудьте еще вывести и сами элементы массива, думаю поймете...
только выводите каждый в новой строке.... | |
| |
|
|
| |
|
|
| |
для: KPETuH
(08.04.2008 в 11:25)
| | | нет.. была просьба замерить кол-во итераций.. я замерил | |
| |
|
|
| |
|
|
| |
для: mechanic
(08.04.2008 в 11:23)
| | | в общем я понял что имелось в виду..
что индексы массива могут не быть равномерно инкрементированы и нельзя слепо обратиться к элементу так: $arr[$i], потому что ключа $i может не быть.. впрочем это относится и к ассоциативным массивам, for() для них не оч.хорошо подходит
однако вспомним, с чего пошла эта дискуссия.. ах да, мы искали пустые ЗНАЧЕНИЯ.. ключи, надо полагать, были от нуля и до какого то числа, без "провалов"..
ваше замечание про "отсекание несуществующих элементов" относится с ключам, и вообще стоит заметить, что на самом то деле ничего нигде не отсекается, массивы как были в своем первозданном виде, так и останутся, а проблема for() в том, что она позволяет нормально работать только с массивами, ключи которых представляют собой арифметическую последовательность от 0 и далее..
вообще я for() уже давно не юзаю | |
| |
|
|
| |
|
|
| |
для: mechanic
(08.04.2008 в 11:31)
| | | цитирую топикстартера
а некоторые элементы массива могут отсутствовать
|
| |
| |
|
|
| |
|
|
| |
для: mechanic
(08.04.2008 в 11:31)
| | | > вообще я for() уже давно не юзаю
Ну это говорит лишь о некомпетентности, ибо для разных задач есть разные инструменты и for - простейший цикл, который есть во многих языках программирвония (пусть и называется иногда по-другому). К массивам этот цикл не имеет отношения вообще. | |
| |
|
|
| |
|
|
| |
для: Atheist
(08.04.2008 в 14:55)
| | | > Ну это говорит лишь о некомпетентности
и больше ни о чем? тогда видимо это длинное слово относится и к вам тоже
зы. не помню, чтоб утверждал об отношении for() к массивам | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2008 в 14:54)
| | | А функцией isset() никто не пробовал пользоватся? :) | |
| |
|
|
| |
|
|
| |
для: slawik
(08.04.2008 в 19:01)
| | | isset() не даёт информации ни о типе, ни о содержимом переменной
$a = 0;
$a = "";
$a = "aaa";
Во всех случаях результатом isset будет true | |
| |
|
|