[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: кол-во элементов с заданным ключом
l@pteff
добрый день, есть ассоц. массив

$arr1=array('Mon'=>'1', 'Tue'=>'2', 'Thu'=>'3', 'Mon'=>'4', 'Mon'=>'5', 'Tue'=>'6');

нужно вывести кол-во элементов с ключом 'Tue'. Пробую делать так:

$arr1=array('Mon'=>'1', 'Tue'=>'2', 'Thu'=>'3', 'Mon'=>'4', 'Mon'=>'5', 'Tue'=>'6');
$arr=array();
foreach ($arr1 as $key=>$value) {
if (array_key_exists('Tue', $arr1)) array_push($arr, $arr1['Tue']);
}
echo count($arr);

но почему-то выводится 3 а дамп массива выглядит:
Цитата

[0] => 6
[1] => 6
[2] => 6




Спустя 19 минут, 34 секунды (25.04.2011 - 14:41) T1grOK написал(а):
Вообще то ключ массива представляет собой индентификатор переменной в одном контейнере, то есть

array('Mon'=>'1', 'Mon'=>'2')

Здесь будет присвоено значение элементу массива с ключом 'Mon' равное 1. А далее присвоено значение 2 этому же элементу.
То есть массив будет выглядеть так
 
array([Mon]=>2)

То есть, никаких нескольких элементов с ключом 'Mon' не может быть(если конечно речь не идет о многомерных массивах)

Спустя 21 минута, 36 секунд (25.04.2011 - 15:03) linker написал(а):
В массиве не может быть несколько элементов с одинаковым ключём/индексом!

Спустя 21 минута, 40 секунд (25.04.2011 - 15:24) l@pteff написал(а):
остаётся непонятным вот что: если выбрать другой элемент: Thu:

$arr1=array('Mon'=>'1', 'Tue'=>'2', 'Thu'=>'3', 'Mon'=>'4', 'Mon'=>'5', 'Tue'=>'6');
$arr=array();
foreach ($arr1 as $key=>$value) {
if (array_key_exists('Thu', $arr1)) array_push($arr, $arr1['Thu']);
}
echo count($arr);

почему кол-во элементов в массиве $arr равно 3 а не 1? Дамп:
Цитата

[0] => 3
[1] => 3
[2] => 3

Спустя 1 минута, 34 секунды (25.04.2011 - 15:26) Игорь_Vasinsky написал(а):
Наверно что подсчитаны уникальные

$arr1=array('Mon'=>'1', 'Tue'=>'2', 'Thu'=>'3', 'Mon'=>'4', 'Mon'=>'5', 'Tue'=>'6');

Спустя 1 минута, 7 секунд (25.04.2011 - 15:27) Игорь_Vasinsky написал(а):
Может тебе многомерный массив использовать? значения так переписываются на последние, как было сказано ранее

Спустя 2 минуты, 48 секунд (25.04.2011 - 15:30) Игорь_Vasinsky написал(а):
$arr1 = array(
'Mon'=> array(
"1" => "1",
"2" => "4"
),
'Tue'=> array(
"1" => "2",
"2" => "6"
),
'Thu'=>'3'
);

Спустя 6 минут, 15 секунд (25.04.2011 - 15:36) linker написал(а):
l@pteff
Перечитай мой пост ещё раз. Если лень, то повторю: "В массиве не может быть несколько элементов с одинаковым ключём/индексом!". Либо используй массив массивов, либо меняй ключи/индексы и значения местами.
$arr1 = array(1 => 'Mon', 2 => 'Tue', 3 => 'Thu', 4 => 'Mon', 5 => 'Mon', 6=> 'Tue');
print_r(array_count_values($arr1));

Спустя 29 минут, 50 секунд (25.04.2011 - 16:06) l@pteff написал(а):
действительно, проблема была в уникальности ключей. Переписал так:

$arr1=array("one"=>"Mon", "two"=>"Tue", "three"=>"Thu", "four"=>"Mon", "five"=>"Mon", "six"=>"Tue");
$a=array_count_values($arr1);
foreach ($a as $key=>$value) {
$v++; if ($v==2) break;
echo 'Mon:'. $value;
}

всем спасибо за помощь
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.