2011-09-06 3 views
0

У меня есть поле, в котором хранятся метки, разделенные запятой. Я пытаюсь подсчитать количество перечисленных элементов.Count() return 1 с разделенной запятой строкой с взрывом

Допустим, я уже вытащил данные из БД, а переменная $ теги имеет следующую информацию:

$tags = "Videos,Magazines,Store"; 

// First separate tags by commas, put into into array 
$tagArray = explode(",",$tags); 

// Count how many items are in the array 
$arrayCount = count($tagArray); 

Это всегда возвращает «1», независимо от того, есть элемент в массиве или не. переменная $ tags может иметь любое количество элементов - от пустого до одного элемента, такого как «Видео», до нескольких элементов «Видео, игры, магазин» и т. д.

Может кто-то помочь мне в том, что я делаю неправильно ?

+6

Возвращает '3' [для меня] (http://codepad.org/jHkGFYYW). Вы случайно вызываете (http://codepad.org/GQnFA0NX) 'count()' в исходной строке? – alex

+1

Не воспроизводимый. Отправьте свой фактический код. (Возможно, избегайте имен переменных смешанного случая.) – mario

+1

Проблема с кодировкой? Являются ли ваши запятые не запятыми? – deceze

ответ

2

От PHP инструкции:

Если разделитель содержит значение, которое не содержится в строке и используется отрицательный предел, то пустой массив будет возвращен, в противном случае массив, содержащий строку, будет возвращен.

Итак, просто - если разделитель не найден в строке, взорвать ничего не делать. Если Ваша переменная содержит пустую строку, граф() возвращает 1. Вам нужно NULL значение для подсчета() для возврата 0.

Попробуйте это:

$tags = "Videos,Magazines,Store"; 

// First separate tags by commas, put into into array<br> 
$tagArray = <b>($tags != '')?</b>explode(",",$tags)<b>:NULL</b>; 

// Count how many items are in the array<br> 
$arrayCount = count($tagArray);