<?php
class ArrayFilter {
private $arr = array();
private $field;
private $value;
function __construct($array, $field, $value) {
$this->arr = $array;
$this->field = $field;
$this->value = $value;
}
function dataCorrect($arr) {
echo("\n->> ".print_r($array)." <<-\n");
$field = $this->field;
$val = $this->value;
return $arr[$field] == $val;
}
}
$fields = array(
'OrgType' => array(
'label' => 'Субъект права'
,'showType' => array(0, 1, 2)
,'sort' => 1
)
,'OrgName' => array(
'label' => 'Полное наименование организации'
,'showType' => array(0, 1, 2)
,'sort' => 1
)
,'OrgNameSmall' => array(
'label' => 'Краткое наименование организации'
,'showType' => array(0, 1, 2)
,'sort' => 1
)
,'Surname' => array(
'label' => 'Фамилия'
,'showType' => array(1, 2)
,'sort' => 1
)
,'Name' => array(
'label' => 'Имя'
,'showType' => array(1, 2)
,'sort' => 1
)
,'Patronymic' => array(
'label' => 'Отчество'
,'showType' => array(1, 2)
,'sort' => 1
)
,'INN' => array(
'label' => 'ИНН'
,'showType' => array(0, 1, 2)
,'sort' => 1
)
,'KPP' => array(
'label' => 'КПП'
,'showType' => array(0, 1, 2)
,'sort' => 1
)
,'OGRN' => array(
'label' => 'ОГРН'
,'showType' => array(0, 1, 2)
,'sort' => 1
)
,'EtpRole' => array(
'label' => 'Роль на ЭТП'
,'showType' => array(0, 1, 2)
,'sort' => 1
)
,'UrAddressUnparsed' => array(
'label' => 'Юридический адрес'
,'showType' => array(0, 1, 2)
,'sort' => 1
)
,'UrAddress' => array(
'label' => 'Юридический адрес'
,'showType' => array()
,'sort' => 1
)
,'PostAddressUnparsed' => array(
'label' => 'Фактический адрес'
,'showType' => array(0, 1, 2)
,'sort' => 1
)
,'PostAddress' => array(
'label' => 'Фактический адрес'
,'showType' => array()
,'sort' => 1
)
// директор
,'DirName' => array(
'label' => 'ФИО руководителя'
,'showType' => array(0, 1)
,'sort' => 2
)
,'DirDol' => array(
'label' => 'Должность'
,'showType' => array(0, 1)
,'sort' => 2
)
,'DirDivision' => array(
'label' => 'Структурное подразделение'
,'showType' => array(0)
,'sort' => 2
)
,'DirBasis' => array(
'label' => 'Вид документа, на основании которого действует руководитель'
,'showType' => array(0)
,'sort' => 2
)
,'DirEmail' => array(
'label' => 'E-mail директора'
,'showType' => array(0, 1)
,'sort' => 2
)
// контактное лицо
,'KontName' => array(
'label' => 'ФИО контактного лица'
,'showType' => array(0, 1, 2)
,'sort' => 3
)
,'KontPhone' => array(
'label' => 'телефон контактного лица'
,'showType' => array(0, 1, 2)
,'sort' => 3
)
);
// задаем имя поля и значение которое ищем
$field = 'sort';
$value = '3';
// сам механизм фильтрации массива глубина 1 уровень
$out = array_filter(
$fields,
array(
new ArrayFilter($fields, $field, $value),
'dataCorrect'
)
);
print_r($out);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/BeMCp
function name: (null)
number of ops: 19
compiled vars: !0 = $fields, !1 = $field, !2 = $value, !3 = $out
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
23 0 E > ASSIGN !0, <array>
140 1 ASSIGN !1, 'sort'
141 2 ASSIGN !2, '3'
144 3 INIT_FCALL 'array_filter'
145 4 SEND_VAR !0
147 5 NEW $7 'ArrayFilter'
6 SEND_VAR_EX !0
7 SEND_VAR_EX !1
8 SEND_VAR_EX !2
9 DO_FCALL 0
10 INIT_ARRAY ~9 $7
148 11 ADD_ARRAY_ELEMENT ~9 'dataCorrect'
12 SEND_VAL ~9
13 DO_ICALL $10
144 14 ASSIGN !3, $10
152 15 INIT_FCALL 'print_r'
16 SEND_VAR !3
17 DO_ICALL
18 > RETURN 1
Class ArrayFilter:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/BeMCp
function name: __construct
number of ops: 10
compiled vars: !0 = $array, !1 = $field, !2 = $value
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
8 0 E > RECV !0
1 RECV !1
2 RECV !2
10 3 ASSIGN_OBJ 'arr'
4 OP_DATA !0
11 5 ASSIGN_OBJ 'field'
6 OP_DATA !1
12 7 ASSIGN_OBJ 'value'
8 OP_DATA !2
13 9 > RETURN null
End of function __construct
Function datacorrect:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/BeMCp
function name: dataCorrect
number of ops: 15
compiled vars: !0 = $arr, !1 = $array, !2 = $field, !3 = $val
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
15 0 E > RECV !0
16 1 INIT_FCALL 'print_r'
2 SEND_VAR !1
3 DO_ICALL $4
4 CONCAT ~5 '%0A-%3E%3E+', $4
5 CONCAT ~6 ~5, '+%3C%3C-%0A'
6 ECHO ~6
17 7 FETCH_OBJ_R ~7 'field'
8 ASSIGN !2, ~7
18 9 FETCH_OBJ_R ~9 'value'
10 ASSIGN !3, ~9
19 11 FETCH_DIM_R ~11 !0, !2
12 IS_EQUAL ~12 !3, ~11
13 > RETURN ~12
20 14* > RETURN null
End of function datacorrect
End of class ArrayFilter.
Generated using Vulcan Logic Dumper, using php 8.0.0
preferences:
159.6 ms | 1392 KiB | 17 Q