Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Фильтр массива (https://javascript.ru/forum/dom-window/66715-filtr-massiva.html)

Sav2907 05.01.2017 11:06

Фильтр массива
 
Привет, есть код:
$i = 1;
		foreach ($data as $employeeid => $rows) {
		sort($rows);
			foreach ($rows as $row) {
				echo $i++.'. ';
				echo $row['Tool1Identifier'].' ';
				echo $row['Tool2Identifier'].'<br>';
			}
			
		}


Он показывает следующее:



Если в двух словах, то человек работает с двумя позициями. На одной позиции один номер или пусто. Нужно подсчитать каждую замену номера на позиции. Типа вот так:



Всего: 6

рони 05.01.2017 11:17

Цитата:

Сообщение от Sav2907
Если в двух словах, то человек работает с двумя позициями. На одной позиции один номер или пусто. Нужно подсчитать каждую замену номера на позиции. Типа вот так:

подожду переводчика ...

Sav2907 05.01.2017 11:22


laimas 05.01.2017 11:43

Откуда эти данные и как они связаны?

ksa 05.01.2017 11:58

И каким боком тут раздел "Элементы интерфейса"? :blink:

рони 05.01.2017 12:03

Sav2907,
не легче ... что это за данные (массив?) и что такое замена позиции?
Цитата:

Сообщение от laimas
как они связаны?


Sav2907 05.01.2017 12:42

рони,
Массив.
1-13 номер заказа.
1 заказ: заказ делался одним номером (257).
2 заказ: 257 и 258
3 тем и другим

Результат:
1 заказ одна замена
2 заказ одна замена
3 ни одной

laimas 05.01.2017 12:46

Sav2907,
откуда эти данные, где хранятся?

Sav2907 05.01.2017 12:50

laimas,
выборка из БД.
Полный код:
<?php
$shiftStart = new DateTime('2016-12-27 06:00:00');
$shiftEnd = new DateTime('2016-12-27 12:00:00');
$server = qqG3Server_Init('SEUA_SAV', 90);

if (!qqG3Server_Connected($server)) die('Can\'t connect to SEUA_SAV');
$clip = qqG3Server_NewClip($server, 'SDA', 0);
$view = qqG3Clip_NewView($clip, 0);
qqG3View_BeginAND($view);
	qqG3View_Long($view, 10, 0, 'ActWorkStation', 1);
	qqG3View_Long($view, 9, 0, 'ActWorkStation', 50);
	qqG3View_Utime($view, 9, 0, 'ActualStartCaoDtZt', $shiftEnd->format('U'));
	qqG3View_Utime($view, 9, 0, 'ActualEndCaoDtZt', $shiftEnd->format('U'));
	qqG3View_Long($view, 5, 0, 'PersonnelNo', 601);

		qqG3View_BeginOR($view);
			qqG3View_Utime($view, 10, 0, 'ActualStartCaoDtZt', $shiftStart->format('U'));
			qqG3View_Utime($view, 10, 0, 'ActualEndCaoDtZt', $shiftStart->format('U'));
		qqG3View_End($view);
qqG3View_End($view);
qqG3View_BeginFetch($view);
if (qqG3View_Count($view) > 0) {
	$data = array();
	while ($tuple = qqG3View_Fetch($view)) {
		$employeeid = qqG3Tuple_GetLong($tuple, 0, 'PersonnelNo');
	
		if (!array_key_exists($employeeid, $data)) $data[$employeeid] = array();
		array_push($data[$employeeid], array(
		
			'ActualStartCaoDtZt' => date('Y-m-d H:i:s', qqG3Tuple_GetUtime($tuple, 0, 'ActualStartCaoDtZt')),
			'ActualEndCaoDtZt' => date('Y-m-d H:i:s', qqG3Tuple_GetUtime($tuple, 0, 'ActualEndCaoDtZt')),			
			'Tool1Identifier' => qqG3Tuple_GetString($tuple, 0, 'Tool1Identifier'),
			'Tool2Identifier' => qqG3Tuple_GetString($tuple, 0, 'Tool2Identifier')		  
		));
		
	}
	sort($data);
	$i = 1;
		foreach ($data as $employeeid => $rows) {
		sort($rows);
			foreach ($rows as $row) {
				echo $i++.'. ';
				echo $row['Tool1Identifier'].' ';
				echo $row['Tool2Identifier'].'<br>';
			}
			
		}
	
}

qqG3View_EndFetch($view);
qqG3View_Destroy($view);
qqG3Clip_Destroy($clip);
qqG3Server_Destroy($server);
?>

laimas 05.01.2017 12:53

Я не знаю такого sql-сервера, но если в нем данные описаны по уму, имеют связи, то все что вы пытаетесь получить, получают в рамках sql-запроса.


Часовой пояс GMT +3, время: 22:43.