2014-08-28 2 views
1

У меня есть это в моей БД: 3,14,12,13Подсчет количества элементов в массиве

Вызывается $ пользователя [ «Buddylist»]

И это мой код, но выход 1 вместо 4, Что случилось?

$prefix = '"'; 
$tag = explode(',', $user['buddylist']); 
$foll = $prefix . implode('",' . $prefix, $tag) . '",'; 
$following = array($foll); 
$nr = count($following); 

Выход $ Фолля является "3", "14", "12", "13",:/

ответ

2

Поскольку Фолля является строкой, когда вы делаете это:

$foll = $prefix . implode('",' . $prefix, $tag) . '",'; 

вы создаете массив с одним элементом, когда вы делаете это:

$following = array($foll); 

Если вы хотите посчитать, что вам нужно подсчитать массив, прежде чем превратить его в строку:

$prefix = '"'; 
$tag = explode(',', $user['buddylist']); 
$nr = count($tag); 
$foll = $prefix . implode('",' . $prefix, $tag) . '",'; 
$following = array($foll); 

Я бы, наверное, его код, как это:

class Buddies { 
    private $buddies; 
    public function __construct($buddy_list_string) { 
     $this->buddies = explode(',', $buddy_list_string); 
    } 
    public function count() { 
     return count($this->buddies); 
    } 
    public function __toString() { 
     return '"' . implode('","', $this->buddies) . '"'; 
    } 
    public function toArray() { 
     return $this->buddies; 
    } 
} 

$buddies = new Buddies($user['buddylist']); 
echo $buddies->count(); //4 
echo $buddies; //"3","14","12","13" 
foreach($buddies->toArray() as $buddy) { 
    //do stuff 
} 
+0

так просто мне это нужно: $ тег = взорваться (' ' $ пользователь [' Buddylist']); $ nr = count ($ tag); ? : S –

Смежные вопросы