Вопрос по массиву

Bartman

Новичок
Вопрос по массиву

Подскажите, плз....
есть массив Array ( [0] => 25238 [1] => 0 [2] => 0 )
как узнать количество идексов в массиве не равных нулю?
в данном случае - их два. Как это можно получить?
 

Larson

Новичок
Количество индексов не равных нулю = sizeof($array) - 1 :)
А в твоем случае:
PHP:
for ($i = 0; $i < sizeof( $array ); $i++ )
    if ( $array[$i] !== 0 ) $count++;
 

Larson

Новичок
Crazy - это для "правильных" массивов. Это я ему просто показал, что вопрос был немного неверно сформулирован.
 

Crazy

Developer
Автор оригинала: Larson
А в твоем случае:
PHP:
for ($i = 0; $i < sizeof( $array ); $i++ )
    if ( $array[$i] != 0 ) $count++;
Ты уверен, что подсчитываешь НЕНУЛЕВЫЕ ИНДЕКСЫ? :)

Я б таки выбрал такой вариант:

PHP:
foreach($array as $key=>$value)
  if (is_int($key) && $key>0)
    $count++;
 

Larson

Новичок
Я туплю. Считаю совсем не то, что надо - считал количество значений != 0.
А может быть тогда проще написать if ( $key !== 0 ).
 

Larson

Новичок
[off topic]
А почему у Crazy строка "May 2002 [Cообщений: 2418 ]" не влезает на одну строчку?
[/off topic]
 

Demiurg

Guest
>А почему у Crazy строка "May 2002 [Cообщений: 2418 ]" не влезает на одну строчку?
покупай могитор побольше :)
 

Larson

Новичок
Нет, вот у тебя влезает, а у Crazy нет, хотя порядок количества сообщений у вас одинаковый.
 

Crazy

Developer
Автор оригинала: Demiurg
count($arr) - isset($arr[0])?1:0;
Я таки нашел, к чему докопаться: лучше array_key_exists, а не isset. Контрольный пример:

PHP:
$foo = array ( 0 => null, 1 => 'a', 2 => 'b' );
echo isset($foo[0])?"set":"not set";
echo "<br>";
echo array_key_exists(0,$foo)?"exists":"not exists";
:)
 
Сверху