Как убрать из массива лишние элементы?

12
L
На сайте с 07.12.2007
Offline
351
#11
Samail:
Среди сайтов есть сделанные на древних cms которые с новым PHP работать не хотят.
А как вместо числа вставить переменную?

Надо добавить её в параметры функции:

function Price($el, $cmp) { return $el['price']==$cmp; };

Вызов в требуем месте:

Price($el, 25);

или

$price2 = 25;
Price($el, $price2);

PS: При нестрогом сравнении: $el['price'] == $cmp; возможны глюки с приведением типов переменных, когда 0 == "" и тп.

[Удален]
#12
Samail:
А как вместо числа вставить переменную?

Так лучше гораздо, универсальный фильтр, по параметрам


<?php
$array1 = json_decode('[ { "price": 25, "title_en": "Name 25" },
{ "price": 32, "title_en": "Name 32" },
{ "price": 25, "title_en": "Name 25" },
{ "price": 17, "title_en": "Name 17" },
{ "price": 25, "title_en": "Name 25" },
{ "price": 85, "title_en": "Name 85" }
]', true);

class KeyFilter {
private $val, $name;
public function __construct($name, $val) {
$this->name = $name; $this->val = $val;
}
function check_field( $el ) { return $el[$this->name] == $this->val; }

}
// выбираем нужные прайсы
print_r( array_filter($array1, array(new KeyFilter('price', 25), 'check_field')) );

// выбираем нужные имена
print_r( array_filter($array1, array(new KeyFilter('title_en', 'Name 32'), 'check_field')) );
?>
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий